Jeecg-Boot V3.1.0 获取验证码出错null错误解决
版本号:V3.1.0问题描述后端部署到服务器,本地去访问后端的服务,修改了.env.development中的后端请求服务地址。示例:VUE_APP_API_BASE_URL=http://192.168.1.1:8000/jeecg-boot后端服务器IP:192.168.1.1后端服务器端口:8000后端服务已测试,正常运行。前端本地启动,去访问服务器后台地址,提示“获取验证码出错ull”如果
版本号:V3.1.0
问题描述
后端部署到服务器,本地去访问后端的服务,修改了.env.development中的后端请求服务地址。
示例:VUE_APP_API_BASE_URL=http://192.168.1.1:8000/jeecg-boot
后端服务器IP:192.168.1.1
后端服务器端口:8000
后端服务已测试,正常运行。
前端本地启动,去访问服务器后台地址,提示“获取验证码出错ull”
如果后端是本地启动,即VUE_APP_API_BASE_URL=http://localhost:8000/jeecg-boot
则正常。
附加说明:本地和服务器是同一局域网,不存在网络原因,因为数据库和redis和后端在同一个服务器。
截图&代码:
代码未做任何修改,除了前端.env.development中的后端请求服务地址。
去看了日志,后台报空指针,但是不知道为何?
解决方案:
1:开启SpringBoot的远程Debug模式,
参考https://blog.csdn.net/Phhht/article/details/116569097。
然后通过断点的方式一步一步去排查问题,找到方法:RandImageUtil—>getImageBuffer方法中,dispose方法报错。
// 图象生效
graphics.dispose();
错误:cannot evaluate sun.java2d.SunGraphics2D.toString
解决方案:
参考:https://www.jianshu.com/p/6d5acc28b061
Linux环境BufferedImage.getGraphics空指针异常,验证码的生成中用到了BufferedImage.getGraphics,开发环境中一切正常,直到今天,部署到linux之后,一直提示空指针镇异常,看的我是一脸懵B,服务器打断点之后,发现从BufferedImage.getGraphics之后,获取的Graphics2D就存在错误(cannot evalute sun.java2d.SunGraphics2D.toString()),一直到调用Graphics2D.drawString方法之后才会抛出空指针异常。
yum install fontconfig
直接安装,完事后解决。
上面给出的是普通java -jar的解决办法。
下面说Docker方式,Docker的话,按照官方给定的Dockerfile,即在目录jeecg-boot-module-system下,有个Dockerfile文件,根据他们的基础镜像运行,是没有问题的。
我的基础镜像因为用了openjdk:8-jdk-alpine,缺少字体库的原因估计是。
更多推荐
所有评论(0)