問題背景
最近在使用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