我们有许多配置不同的实验室机器。当我们的某个用户尝试运行 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
这样就生成了之前没有的版本。但程序仍然无法运行。
答案1
现在这个问题终于解决了,所以我将把这个答案留在这里,以便其他遇到同样问题的人可以参考,因为这很不常见。Citrix 已承认这是其产品的问题,并已发布针对此问题的补丁。
Citrix 的服务请求编号为 60235154,补丁将包含在 2011 Q1 Feature Pack v3 中。