Alpine Linux中OpenJDK无法使用字体控件(fontconfig)

问题背景

最近在使用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
posted @ 2022-02-19 11:35  GZ-Kevin哥  阅读(3392)  评论(0)    收藏  举报