Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Caused by: java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11FontManagerat[Bug] A new bug #39

Open
YAGAMIL opened this issue Nov 4, 2020 · 10 comments

Comments

@YAGAMIL
Copy link

YAGAMIL commented Nov 4, 2020

The problem was resolved after changing the JDK to Oracle

@luchsh
Copy link
Contributor

luchsh commented Nov 17, 2020

The problem was resolved after changing the JDK to Oracle

可以试试这里的几个方法,如果不行贴个testcase看看如何?

@YAGAMIL
Copy link
Author

YAGAMIL commented Nov 23, 2020

我就是用的jdk11啊,切换回jdk8肯定是好了,但是我整个项目就要迁移回jdk8了,使用oracle则没有这个问题,你们阿里的easy-excel用你们的龙井JDK11也会报这个异常的

@YAGAMIL
Copy link
Author

YAGAMIL commented Nov 23, 2020

Caused by: java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11FontManager
at java.base/java.lang.Class.forName0(Native Method) ~[na:na]
at java.base/java.lang.Class.forName(Class.java:398) ~[na:na]
at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:82) ~[na:na]
at java.base/java.security.AccessController.doPrivileged(Native Method) ~[na:na]
at java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74) ~[na:na]
at java.desktop/java.awt.Font.getFont2D(Font.java:497) ~[na:na]
at java.desktop/java.awt.Font.canDisplayUpTo(Font.java:2250) ~[na:na]
at java.desktop/java.awt.font.TextLayout.singleFont(TextLayout.java:469) ~[na:na]
at java.desktop/java.awt.font.TextLayout.(TextLayout.java:530) ~[na:na]
at org.apache.poi.ss.util.SheetUtil.getDefaultCharWidth(SheetUtil.java:275) ~[poi-3.17.jar!/:3.17]
at org.apache.poi.xssf.streaming.AutoSizeColumnTracker.(AutoSizeColumnTracker.java:117) ~[poi-ooxml-3.17.jar!/:3.17]
at org.apache.poi.xssf.streaming.SXSSFSheet.(SXSSFSheet.java:82) ~[poi-ooxml-3.17.jar!/:3.17]
at org.apache.poi.xssf.streaming.SXSSFWorkbook.createAndRegisterSXSSFSheet(SXSSFWorkbook.java:658) ~[poi-ooxml-3.17.jar!/:3.17]
at org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:679) ~[poi-ooxml-3.17.jar!/:3.17]
at org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:90) ~[poi-ooxml-3.17.jar!/:3.17]
at com.alibaba.excel.util.WorkBookUtil.createSheet(WorkBookUtil.java:66) ~[easyexcel-2.1.6.jar!/:na]
at com.alibaba.excel.context.WriteContextImpl.createSheet(WriteContextImpl.java:187) ~[easyexcel-2.1.6.jar!/:na]
at com.alibaba.excel.context.WriteContextImpl.initSheet(WriteContextImpl.java:167) ~[easyexcel-2.1.6.jar!/:na]
at com.alibaba.excel.context.WriteContextImpl.currentSheet(WriteContextImpl.java:114) ~[easyexcel-2.1.6.jar!/:na]
at com.alibaba.excel.write.ExcelBuilderImpl.addContent(ExcelBuilderImpl.java:56) ~[easyexcel-2.1.6.jar!/:na]
... 66 common frames omitted

@yuleil
Copy link
Collaborator

yuleil commented Nov 23, 2020

请尝试下 yum install fontconfig

@YAGAMIL
Copy link
Author

YAGAMIL commented Nov 24, 2020

请尝试下 yum install fontconfig

我使用的是龙井的dockers镜像的,

FROM registry.cn-shanghai.aliyuncs.com/dragonwell/dragonwell11:11.0.5.1-preview_alpine_x86_64
RUN rm -f /etc/localtime \
&& ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone

这怎么安装,如果我切换回oracle的jdk就不会出现这个问题了

@luchsh
Copy link
Contributor

luchsh commented Nov 24, 2020

请尝试下 yum install fontconfig

我使用的是龙井的dockers镜像的,

FROM registry.cn-shanghai.aliyuncs.com/dragonwell/dragonwell11:11.0.5.1-preview_alpine_x86_64
RUN rm -f /etc/localtime \
&& ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone

这怎么安装,如果我切换回oracle的jdk就不会出现这个问题了

alpine 安装fontconfig可以在Dockerfile添加下面的代码,但是我不确定能不能解决你的问题,可以尝试下哈 :)

FROM registry.cn-shanghai.aliyuncs.com/dragonwell/dragonwell11:11.0.5.1-preview_alpine_x86_64
RUN  apk update && apk add fontconfig

@YAGAMIL
Copy link
Author

YAGAMIL commented Nov 25, 2020

请尝试下 yum install fontconfig

我使用的是龙井的dockers镜像的,

FROM registry.cn-shanghai.aliyuncs.com/dragonwell/dragonwell11:11.0.5.1-preview_alpine_x86_64
RUN rm -f /etc/localtime \
&& ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone

这怎么安装,如果我切换回oracle的jdk就不会出现这个问题了

alpine 安装fontconfig可以在Dockerfile添加下面的代码,但是我不确定能不能解决你的问题,可以尝试下哈 :)

FROM registry.cn-shanghai.aliyuncs.com/dragonwell/dragonwell11:11.0.5.1-preview_alpine_x86_64
RUN  apk update && apk add fontconfig

我使用你的办法解决了这个NoClassDefFoundError: Could not initialize class sun.awt.X11FontManager的异常,但是在使用easyExcel的情况下又出现了另一个异常

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.poi.util.DocumentHelper (jar:file:/mat-user.jar!/BOOT-INF/lib/poi-ooxml-3.17.jar!/) to method com.sun.org.apache.xerces.internal.util.SecurityManager.setEntityExpansionLimit(int)
WARNING: Please consider reporting this to the maintainers of org.apache.poi.util.DocumentHelper
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
2020-11-25 10:57:46.165 ERROR 1 --- [nio-8081-exec-7] c.m.b.core.controllers.ErrorController   : java.lang.InternalError: java.lang.reflect.InvocationTargetException

com.alibaba.excel.exception.ExcelGenerateException: java.lang.InternalError: java.lang.reflect.InvocationTargetException
	at com.alibaba.excel.write.ExcelBuilderImpl.addContent(ExcelBuilderImpl.java:67) ~[easyexcel-2.1.6.jar!/:na]
	at com.alibaba.excel.ExcelWriter.write(ExcelWriter.java:161) ~[easyexcel-2.1.6.jar!/:na]
	at com.alibaba.excel.ExcelWriter.write(ExcelWriter.java:146) ~[easyexcel-2.1.6.jar!/:na]
	at com.alibaba.excel.write.builder.ExcelWriterSheetBuilder.doWrite(ExcelWriterSheetBuilder.java:190) ~[easyexcel-2.1.6.jar!/:na]
	at com.matcloud.user.controllers.TeamController.excelExport(TeamController.java:144) ~[classes!/:1.0]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105) ~[spring-webmvc-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879) ~[spring-webmvc-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793) ~[spring-webmvc-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) ~[spring-webmvc-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) ~[tomcat-embed-core-9.0.34.jar!/:9.0.34]
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.6.RELEASE.jar!/:5.2.6.RELEASE]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[tomcat-embed-core-9.0.34.jar!/:9.0.34]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.34.jar!/:9.0.34]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.34.jar!/:9.0.34]
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.34.jar!/:9.0.34]

同样,使用OracleJDK也不会出现这个异常,只是会报

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.poi.util.DocumentHelper (jar:file:/mat-user.jar!/BOOT-INF/lib/poi-ooxml-3.17.jar!/) to method com.sun.org.apache.xerces.internal.util.SecurityManager.setEntityExpansionLimit(int)
WARNING: Please consider reporting this to the maintainers of org.apache.poi.util.DocumentHelper
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

这个警告

@luchsh
Copy link
Contributor

luchsh commented Nov 25, 2020

你使用的Oracle JDK的完整版本号能方便发一下吗?($OracleJDK/bin/java -version 这个命令的输出)

@YAGAMIL
Copy link
Author

YAGAMIL commented Dec 1, 2020

你使用的Oracle JDK的完整版本号能方便发一下吗?($OracleJDK/bin/java -version 这个命令的输出)

ORACLE-JDK:
java version "11.0.6" 2020-01-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.6+8-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.6+8-LTS, mixed mode, sharing)

Dragonwell-JDK
openjdk version "11.0.8" 2020-07-14
OpenJDK Runtime Environment (Alibaba Dragonwell) (build 11.0.8+9)
OpenJDK 64-Bit Server VM (Alibaba Dragonwell) (build 11.0.8+9, mixed mode)

@luchsh
Copy link
Contributor

luchsh commented Dec 8, 2020

@yuleil 你那边有空试一下这些版本么?

yuleil pushed a commit to yuleil/dragonwell11 that referenced this issue Jul 22, 2022
Title: Merge remote-tracking branch 'upstream/master' into jdk11 

* 8277796: Bump update version for OpenJDK: jdk-11.0.15
 * 8272345: macos doesn&dragonwell-project#39;t check `os::set_boot_path()` result
 * 8268882: C2: assert(n->outcnt() != 0 || C->top() == n || n->is_Proj()) failed: ...
 * 8276105: C2: Conv(D|F)2(I|L)Nodes::Ideal should handle rounding correctly
 * 8222825: ARM32 SIGILL issue on single core CPU (not supported PLDW instruction)
 * 8274265: Suspicious string concatenation in logTestUtils.inline.hpp
 * 8266176: -Wmaybe-uninitialized happens in libArrayIndexOutOfBoundsExceptionTest.c
 * 8257467: [TESTBUG] -Wdeprecated-declarations is reported at sigset() in exesigtest.c
 * 8263185: Mallinfo deprecated in glibc 2.33
 * 8266173: -Wmaybe-uninitialized happens in jni_util.c
 * 8254940: AArch64: Cleanup non-product thread members
 * 8251558: J2DBench should support shaped and translucent windows
 * 8266174: -Wmisleading-indentation happens in libmlib_image sources
 * 8266168: -Wmaybe-uninitialized happens in check_code.c
 * 8208074: [TESTBUG] vmTestbase/nsk/jvmti/RedefineClasses/StressRedefineWithoutBy...
 * 8274523: java/lang/management/MemoryMXBean/MemoryTest.java test should handle Shenandoah
 * 8256373: [Windows/HiDPI] The Frame#setBounds does not work in a minimized state
 * Merge
 * 8199079: Test javax/swing/UIDefaults/6302464/bug6302464.java is unstable
 * ...
 * Merge remote-tracking branch &dragonwell-project#39;upstream/master&dragonwell-project#39; into jdk11

Link: https://code.aone.alibaba-inc.com/xcode/jdk11/codereview/8749440
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants