NoClassDefFoundError: 無法初始化 class sun.awt.X11FontManager

2022-09-02 05:33:59

当我们从Oracle JDK-8迁移到Open JDK-11时,Apache POI excel生成存在问题

已尝试-Djava.awt.headless=true

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11FontManager
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1053)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:998)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:901)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:875)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)```

答案 1

如果您使用的是 openjdk 的 docker 'slim images',则该镜像不再包含 'fontconfig' 和 'libfreetype6' 包。

检查 openjdk:11-slim 的 docker 文件和 openjdk:8-slim 的 docker 文件之间的区别。

您可以选择另一个 docker 映像(例如 ),也可以在 docker 文件中自行安装软件包:openjdk:11-windowsservercore

RUN apt-get update; apt-get install -y fontconfig libfreetype6 

答案 2

根本问题是其他问题

我刚刚创建了一个简单的类,它执行X11FontManager的类加载,当我运行它时抱怨

unable to link "libfreetype6"

一旦我安装它使用

apt-get install libfreetype6

开始抛出无法链接“libfontconfig1.so”

apt-get install libfontconfig1

修复了问题

阅读本文并了解了一些事情 https://medium.com/azulsystems/using-jlink-to-build-java-runtimes-for-non-modular-applications-9568c5e70ef4


推荐