Jeecg-Boot V3.1.0 获取验证码出错null错误解决

Posted 爱是与世界平行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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”

如果后端是本地启动,即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,缺少字体库的原因估计是。

以上是关于Jeecg-Boot V3.1.0 获取验证码出错null错误解决的主要内容,如果未能解决你的问题,请参考以下文章

注册帐号界面,验证码图片出错

jeecg-boot中实现跳过登录验证访问其他vue页面

AuthenticationServiceException:验证 SAML 消息时出错 :: AuthNResponse;FAILURE;响应的状态码无效:状态消息为空

安装GD库解决ThinkPHP 验证码Call to undefined function Thinkimagecreate()出错

7 窗口截图验证码处理

Jeecg-Boot前后端分离,针对敏感数据,加密传递方案