我在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 …Run Code Online (Sandbox Code Playgroud) 当我尝试运行shell时......
从安装手册:Java Platform,Enterprise Edition 7 SDK - 安装说明
Solaris,Linux和Mac OS X系统:
如有必要,请为分发文件授予执行权限:chmod + x ./ distribution-filename
在命令提示符下,键入:sh ./ distribution-filename
它说它需要DISPLAY变量集 - 我需要将它设置为什么?
a12-macmini-02:Downloads rdavis$ ./java_ee_sdk-7-jdk7-macosx-x64-ml.sh
This program requires DISPLAY environment variable to be set.
Please re-run after assigning an appropriate value to DISPLAY.
Run Code Online (Sandbox Code Playgroud) 我正在Netbeans的Mac OS X(10.9.1)上使用jdk1.7.0_51开发JavaFX应用程序.我可以毫无问题地运行它,在干净的构建后,我也可以从dist /文件夹启动jar.
现在我想在64位Ubuntu 13.04服务器上部署它.我做了很多问题,但最终设置服务器以获得正确的JRE,字体和库.运行jar导致错误比我的代码更深入(将UnsatisfiedLinks转到提到MACOS的本机库)所以我认为最好将我的应用程序打包到Ubuntu本身.我最终安装了NetBeans来创建一个新的(本机)JavaFX项目,并使用sftp从我的机器上传了src /和lib /文件夹.通过NetBeans中的重建项目运行代码工作正常,但在运行期间我在控制台中收到警告:
libGL error: failed to load driver: swrast
libGL error: Try again with LIBGL_DEBUG=verbose for more details.
Prism-ES2 Error : GL_VERSION (major.minor) = 1.4
Run Code Online (Sandbox Code Playgroud)
无论如何,应用程序都会运行.在干净的构建之后,我可以类似地从dist /文件夹运行jar.终端中出现相同的警告但随后应用程序启动.
但是,如果我在没有-X标志的情况下ssh到服务器并尝试运行该应用程序,我会得到以下内容:
Failed in XOpenDisplay
(java:29341): Gtk-WARNING **: cannot open display:
Run Code Online (Sandbox Code Playgroud)
但是,我的应用程序没有UI.它只是将JavaFX用于WebEngine(这是必需的,不能更改).我想知道是否有人知道是否(如果是这样,如何)可以在没有显示器的情况下启动我的JavaFX jar(只是在服务器上作为守护进程运行).
亲切的问候,Warkst
编辑:
我尝试过这里描述的一些东西:Java无法使用'localhost:10.0'作为DISPLAY变量的值连接到X11窗口服务器
You need to specify the -Djava.awt.headless=true parameter at startup time.
Run Code Online (Sandbox Code Playgroud)
(假设我正在使用命令执行java -Djava.awt.headless=true -jar MyApp.jar此操作),这没有产生任何结果(发生相同的错误).
export DISPLAY=:0
Run Code Online (Sandbox Code Playgroud)
仍然没有结果,虽然错误显然略有改变,现在读到:
(java:30765): Gtk-WARNING **: cannot open display: :0
Run Code Online (Sandbox Code Playgroud)
最后我还尝试了以下内容:
unset DISPLAY
Run Code Online (Sandbox Code Playgroud)
这导致了原始错误(显然没有设置DISPLAY).