遇到的问题是在后台管理系统中导出 Excel 时报空指针 java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)
java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)
循着调用栈追踪问题 ,发现问题出在 Excel 组件上. Excel 组件试图根据字体大小自动调整单元格宽度 , 当寻找 fontconfig 时找不到, 返回 null .
fontconfig
复制以上报错谷歌 , 可以看到很多 Issue , 可以发现是 Alpine环境缺少对应的包 , 此问题影响所有官方 Alpine 的Java环境.
在项目的 Dockerfile 中进行修改 , 增加以下内容
1
ENV LANG en_US.UTF-8RUN apk add --update ttf-dejavu fontconfig && rm -rf /var/cache/apk/*
通过添加 fontconfig 和一款字体 dejavu , 可以完美解决问题 . 缺点是每次打包都要安装 ttf-dejavu 比较慢 , 因此该方法不推荐 .
最好的方法是直接使用打包好的镜像