无法在Solaris上初始化类sun.awt.X11GraphicsEnvironment

我在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*..) 

我尝试使用-Djava.awt.headless=true配置JAVA_OPTS但它不起作用!

有没有其他解决方案的问题?

尝试在servlet的构造函数中运行此代码

 System.setProperty("java.awt.headless", "true"); 

要么

在服务器的启动脚本中使用此参数:

 -Djava.awt.headless=true 

以下是当您要创建具有自动大小列的工作表时,在Apache POI中记录和解释此问题的示例。

其实,

 -Djava.awt.headless=true 

没有解决问题,它回避了它。 问题是您尝试运行的应用程序想要在XWindows中使用UI运行。 此错误表示Java等效于’未找到dll’或’.so not found’。 实际执行此操作所需的库不在您使用的JVM类路径中。

问题是你正在使用OpenJDK(或像Jikes这样的其他Java版本),而awt是Java的一部分,由于许可原因而无法开源。 因此,这个类不是故意存在的,也不会在OpenJDK中存在

通过声明

 -Djava.awt.headless=true 

您正在命令行模式下运行,并非所有应用程序都可以执行此操作。 在你的情况下,你逃脱了。 实际解决此问题的唯一方法是在类路径中获取该类及其所有依赖类。 最简单的方法是切换到太阳JRE。

解决了这个问题。 这是我的个人资料,我把我的DISPLAY设置为一个主机,这个主机还没有存在。 我已正确设置并且有效。

$ export DISPLAY=

要么

$ unset DISPLAY

确保你没有更改任何主机名,之后发生此问题,如果是这种情况,那么问题是主机名。

我的Linux服务器遇到了同样的问题。 我不知道发生了什么魔法,通过在我的Linux机器上安装Xorg来解决问题。

 sudo apt-get install xorg openbox