我有一个想要在 Tomcat 6 JVM 中运行的小型 Swing 监控应用程序。该应用程序通过从运行在 Tomcat 下的 Web 服务动态加载监控类来启动。这适用于 Windows,但在 Linux(Ubuntu 10.4)上我遇到了一些错误。
我的第一个错误是我得到了 HeadlessException。我没有明确使用无头模式,在四处搜索后我更改了 Tomcat 的库路径(通过 catalina.sh 中的 -Djava.library.path)指向客户端库(即.../java-6-sun-1.6 .0.26/jre/lib/i386/client) 而不是服务器库。我还在 catalina.sh 中设置了 DISPLAY=:0:0。这摆脱了无头异常,但现在我得到:
java.lang.InternalError: Can't connect to X11 window server using ':0:0' as the value of the DISPLAY variable.
sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
sun.awt.X11GraphicsEnvironment.access$100(X11GraphicsEnvironment.java:52)
sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:155)
java.security.AccessController.doPrivileged(Native Method)
sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:131)
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Class.java:169)
java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:68)
java.awt.Window.init(Window.java:380)
java.awt.Window.<init>(Window.java:433)
java.awt.Frame.<init>(Frame.java:403)
java.awt.Frame.<init>(Frame.java:368)
javax.swing.JFrame.<init>(JFrame.java:158)
com.quinsoft.zeidon.objectbrowser.ObjectBrowser.startup(ObjectBrowser.java:60)
在这一点上,我被困住了。我尝试了很多不同的事情(比如明确设置“headless = false”并为 DISPLAY 使用不同的值)并且没有任何变化。有人有什么想法吗?
版本信息:
- 雄猫 6.0.28
- Java 1.6
- Ubuntu 10.4