NoClassDefFoundError: Could not initialize class sun.awt.X11FontManager
NoClassDefFoundError: Could not initialize class sun.awt.X11FontManager
当我们从 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)```
潜在的问题是别的
我刚刚创建了一个简单的 class,它 class 加载 X11FontManager 并且当我 运行
它抱怨
unable to link "libfreetype6"
我使用
安装后
apt-get install libfreetype6
开始投掷不了link"libfontconfig1.so"
apt-get install libfontconfig1
解决了问题
阅读本文并了解一些事情
https://medium.com/azulsystems/using-jlink-to-build-java-runtimes-for-non-modular-applications-9568c5e70ef4
如果您使用的是 openjdk 的 docker 'slim images',则映像不再包含包 'fontconfig' 和 'libfreetype6'。
检查 docker file of openjdk:11-slim and the docker file 与 openjdk:8-slim 的区别。
您可以选择另一个 docker 图像(例如 openjdk:11-windowsservercore
),或者在您的 docker 文件中自行安装软件包:
RUN apt-get update; apt-get install -y fontconfig libfreetype6
2021-06-23 03:44:37.950 INFO 1 --- [ Thread-7] ReportService : Template path : /jasper/MgmtSummary.jrxml
Exception in thread "Thread-7" java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11FontManager
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:398)
我在使用 docker 图片时出现上述错误 gcr.io/distroless/java-debian10:11
当我将图像更改为 adoptopenjdk/openjdk11
时,这个问题得到了解决
在 alpine 版本中使用 openjdk docker 图像时出现问题,例如:
adoptopenjdk/openjdk11:jre-11.0.11_9-alpine
。
完整版需要chenge镜像:adoptopenjdk/openjdk11:jre-11.0.11_9
当我们从 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)```
潜在的问题是别的
我刚刚创建了一个简单的 class,它 class 加载 X11FontManager 并且当我 运行 它抱怨
unable to link "libfreetype6"
我使用
安装后apt-get install libfreetype6
开始投掷不了link"libfontconfig1.so"
apt-get install libfontconfig1
解决了问题
阅读本文并了解一些事情 https://medium.com/azulsystems/using-jlink-to-build-java-runtimes-for-non-modular-applications-9568c5e70ef4
如果您使用的是 openjdk 的 docker 'slim images',则映像不再包含包 'fontconfig' 和 'libfreetype6'。
检查 docker file of openjdk:11-slim and the docker file 与 openjdk:8-slim 的区别。
您可以选择另一个 docker 图像(例如 openjdk:11-windowsservercore
),或者在您的 docker 文件中自行安装软件包:
RUN apt-get update; apt-get install -y fontconfig libfreetype6
2021-06-23 03:44:37.950 INFO 1 --- [ Thread-7] ReportService : Template path : /jasper/MgmtSummary.jrxml
Exception in thread "Thread-7" java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11FontManager
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:398)
我在使用 docker 图片时出现上述错误 gcr.io/distroless/java-debian10:11
当我将图像更改为 adoptopenjdk/openjdk11
在 alpine 版本中使用 openjdk docker 图像时出现问题,例如:
adoptopenjdk/openjdk11:jre-11.0.11_9-alpine
。
完整版需要chenge镜像:adoptopenjdk/openjdk11:jre-11.0.11_9