问题背景
最近在使用hutool工具类提供Excel生成功能 开发一个数据导出的需求,在本地调试无问题,可以正常生成Excel文件;
但部署到线上测试环境则报错调用sum.awt出现报错。
java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion
问题分析
笔者的线上环境使用
- docker
- alpine linux v3.9
- openjdk:8-jre-alpine
在经过一些google,可以确定两个问题:1)openjdk不包括sum.awt 的字体控件;2)alpine linux v3.9的基础镜像也未安装有 fontconfig 和 ttf-dejavu字体。
解决方案
1) 将openjdk更换成oraclejdk。但考虑到商业授权的问题,因此不更换,仍使用openjdk。
2)再dockerfile构建文件中,安装 fontconfig 和 ttf-dejavu字体。
FROM openjdk:8-jre-alpine
# 安装 fontconfig 和 ttf-dejavu字体
RUN apk add fontconfig
RUN apk add --update ttf-dejavu
RUN fc-cache --force