我在Solaris计算机上运行安装程序时遇到此错误:
Installing...
-------------
[==================|==================|==================|==================]
[---Invocation of this Java Application has caused an InvocationTargetException. This application will now exit. (LAX)
Stack Trace:
java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:102)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:81)
at sun.awt.X11FontManager.isHeadless(X11FontManager.java:487)
at sun.awt.X11FontManager.getFontPath(X11FontManager.java:767)
at sun.font.SunFontManager.getPlatformFontPath(SunFontManager.java:3288)
at sun.font.SunFontManager$11.run(SunFontManager.java:3314)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.SunFontManager.loadFonts(SunFontManager.java:3310)
at sun.awt.X11FontManager.loadFonts(X11FontManager.java:439)
at sun.font.SunFontManager.findFont2D(SunFontManager.java:2347)
at sun.font.SunFontManager.findFont2D(SunFontManager.java:2285)
at java.awt.Font.getFont2D(Font.java:498)
at java.awt.Font.getFamily(Font.java:1187)
at java.awt.Font.getFamily_NoClientCode(Font.java:1161)
at java.awt.Font.getFamily(Font.java:1153)
at ZeroGrs.a(DashoA10*..)
at ZeroGrs.a(DashoA10*..)
at ZeroGrs.a(DashoA10*..)
at ZeroGrs.a(DashoA10*..)
at ZeroGrs.a(DashoA10*..)
at ZeroGrs.a(DashoA10*..)
at com.zerog.ia.installer.actions.InstallUninstaller.a(DashoA10*..)
at com.zerog.ia.installer.actions.InstallUninstaller.d(DashoA10*..)
at com.zerog.ia.installer.actions.InstallUninstaller.installSelf(DashoA10*..)
at com.zerog.ia.installer.InstallablePiece.install(DashoA10*..)
at com.zerog.ia.installer.actions.InstallDirectory.install(DashoA10*..)
at com.zerog.ia.installer.actions.InstallDirectory.install(DashoA10*..)
at com.zerog.ia.installer.InstallablePiece.install(DashoA10*..)
at com.zerog.ia.installer.GhostDirectory.install(DashoA10*..)
at com.zerog.ia.installer.InstallablePiece.install(DashoA10*..)
at com.zerog.ia.installer.Installer.install(DashoA10*..)
at com.zerog.ia.installer.LifeCycleManager.b(DashoA10*..)
at com.zerog.ia.installer.LifeCycleManager.a(DashoA10*..)
at com.zerog.ia.installer.Main.main(DashoA10*..)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.zerog.lax.LAX.launch(DashoA10*..)
at com.zerog.lax.LAX.main(DashoA10*..)
我尝试使用JAVA_OPTS
配置-Djava.awt.headless=true
,但它不起作用!
还有其他解决方案吗?
答案 0 :(得分:16)
尝试在servlet
的构造函数中运行此代码System.setProperty("java.awt.headless", "true");
或
在服务器的启动脚本中使用此参数:
-Djava.awt.headless=true
如果您要创建包含自动尺寸列的工作表,请在Apache POI中记录并解释此问题的示例。
答案 1 :(得分:11)
解决了这个问题。这是我的个人资料,我把我的DISPLAY设置为一个主机,这个主机还没有存在。 我已正确设置它并且有效。
$ export DISPLAY=
或者
$ unset DISPLAY
答案 2 :(得分:11)
实际上,
-Djava.awt.headless=true
不修复问题,它回避了它。问题是您尝试运行的应用程序想要在XWindows中使用UI运行。此错误表示Java等效于“未找到”或“找不到”。实际执行此操作所需的库在您使用的JVM类路径中不存在。
问题是你正在使用OpenJDK(或像Jikes这样的其他Java版本),而awt是Java的一部分,由于许可原因而无法开源。因此,这个类不是故意存在的,也不会存在于OpenJDK
中宣布
-Djava.awt.headless=true
您正在命令行模式下运行,并非所有应用都可以执行此操作。在你的情况下,你逃脱了。 实际修复此问题的唯一方法是在类路径中获取该类及其所有依赖类。最简单的方法是切换到太阳JRE。
答案 3 :(得分:1)
确保您没有更改任何主机名,之后发生此问题,如果是这种情况,则问题出在主机名上。
答案 4 :(得分:0)
我的Linux服务器遇到了同样的问题。我不知道发生了什么魔法,通过在我的Linux机器上安装Xorg来解决问题。
sudo apt-get install xorg openbox
答案 5 :(得分:0)
Usually, the program starts to activate the headless mode, telling the program, now you have to work in Headless mode, don't expect the hardware to help, you have to be self-reliant, relying on the computing power of the system to simulate these features:
System.setProperty("java.awt.headless","true");
Edit the ${TOMCAT_HOME}/bin/catalina.sh or ${TOMCAT_HOME}/bin/catalina.bat file:
In all similar code below:
"$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Djava.security.manager \
-Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
Add a sentence at the end:
-Djava.awt.headless=true \
The revised content is as follows:
Exec "$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
-Djava.awt.headless=true \
Directly search for the line -Djava.io.tmpdir="$CATALINA_TMPDIR" and add it under this line:
-Djava.awt.headless=true \
There are a total of seven places, which can be solved after the restart.
答案 6 :(得分:0)
如果实际上有问题的“安装程序”(此错误失败)可能是基于install4j的安装程序,请注意简单的解决方案是使用-c标志,因此:< / p>
./myinstaller.sh
成为:
./myinstaller.sh -c
我有与此处最初提到的错误相同的错误,并且在Linux而不是Solaris上也存在错误,并且尽管在网络上有很多建议(例如此处和其他建议),但我很幸运地发现,对于我来说,这确实很简单-c。
更多内容:https://www.ej-technologies.com/resources/install4j/help/doc/installers/installerModes.html#console