java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11F

2,739 阅读1分钟

报错原因

更换基础镜像后,使用 easy excel 报错:Could not initialize class sun.awt.X11FontManager。

com.alibaba.excel.exception.ExcelGenerateException: java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11FontManager
    at com.alibaba.excel.write.ExcelBuilderImpl.addContent(ExcelBuilderImpl.java:65)
    at com.alibaba.excel.ExcelWriter.write(ExcelWriter.java:70)

如何解决

查阅资料、通过实验得知,以下两个条件缺一不可:

  1. 在 Java 代码中设置 headless 模式:System.setProperty("java.awt.headless", "true")。
  2. 在 Dockerfile 中安装缺失字体:RUN apt install fontconfig ttf-dejavu -y。

参考资料

  1. NoClassDefFoundError: Could not initialize class sun.awt.X11FontManager
  2. Could not initialize class sun.awt.X11FontManager
  3. Could not initialize class sun.awt.X11FontManager alpine java 17