我们有许多具有不同配置的实验室机器。当我们的一位用户尝试运行 java 应用程序(例如 jconsole)时,它似乎已启动,但不会显示转发,也不会显示任何窗口。在这些情况下,它将失败:
- 在服务器上安装 64 位 Suse SLES11
- 客户端通过 Citrix 访问服务器
- 该应用程序是一个java应用程序
更改其中任何一个,它都可以工作。64 位 SLES10 机器工作,32 位 SLES11 机器工作,用 cygwin/linux 访问 64 位 SLES11 机器工作,运行除 java 应用程序以外的其他应用程序工作。
SuSE 从 SLES10 到 SLES11 是否有一些变化可能会影响 Citrix 中的显示转发?
有时,经过不同的时间后,它会因以下堆栈跟踪而崩溃:
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:68)
at sun.awt.X11.XToolkit.<clinit>(XToolkit.java:89)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at java.awt.Toolkit$2.run(Toolkit.java:834)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:826)
at sun.swing.SwingUtilities2$AATextInfo.getAATextInfo(SwingUtilities2.java:128)
at javax.swing.plaf.metal.MetalLookAndFeel.initComponentDefaults(MetalLookAndFeel.java:1556)
at javax.swing.plaf.basic.BasicLookAndFeel.getDefaults(BasicLookAndFeel.java:130)
at javax.swing.plaf.metal.MetalLookAndFeel.getDefaults(MetalLookAndFeel.java:1591)
at javax.swing.UIManager.setLookAndFeel(UIManager.java:542)
at javax.swing.UIManager.setLookAndFeel(UIManager.java:582)
at javax.swing.UIManager.initializeDefaultLAF(UIManager.java:1344)
at javax.swing.UIManager.initialize(UIManager.java:1433)
at javax.swing.UIManager.maybeInitialize(UIManager.java:1421)
at javax.swing.UIManager.getLookAndFeel(UIManager.java:495)
at sun.tools.jconsole.JConsole.updateLafValues(JConsole.java:63)
at sun.tools.jconsole.JConsole.<clinit>(JConsole.java:58)
Could not find the main class: sun.tools.jconsole.JConsole. Program will exit.
更新:仍然有同样的问题,当更改为不同的图形库时,它似乎改变了问题:
export JAVA_HOME=/usr/java/default
export PJA=$HOME/lib/pja.jar
jconsole -J-Xbootclasspath:$JAVA_HOME/jre/lib/rt.jar:$PJA -J-Dawt.toolkit=com.eteks.awt.PJAToolkit -version
这会产生它以前没有的版本。该程序仍然无法运行。