openjdk8生成验证码报NullPointerException
起因
想在登录页面添加验证码,需要在后端生成随机数并转为base64返回前端。
于是我参考了 jeecg-boot 后端生成base64的做法,但是用Dockerfile build后调用接口会报出空指针异常,报错的log如下:java.lang.NullPointerException:null at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)
解决办法
在Dockerfile里添加:RUN apk add --update font-adobe-100dpi ttf-dejavu fontconfig
原因
我的Dockerfile使用的是 openjdk:8-jdk-alpine
jeecg使用的是 anapsix/alpine-java:8_server-jre_unlimited
,是OracleJDK
openjdk缺少了字体库,这需要在生成base64图片时需要,所以报错了。
加上了 ttf-dejavu fontconfig
这些包之后,重新build镜像,便可以成功生成base64了。
参考
docker中OpenJDK验证码无法显示 java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion
Comments