【发布时间】:2012-04-10 14:41:33
【问题描述】:
我有一个想要在 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 使用不同的值)并且没有任何变化。有人有什么想法吗?
版本信息:
- Tomcat 6.0.28
- Java 1.6
- Ubuntu 10.4
【问题讨论】:
-
作为后续,感谢 Tomcat 用户电子邮件列表,我能够运行它。出于某种原因,我(还)不明白将 Tomcat 作为服务运行会阻止它连接到 X 服务器。如果我直接使用 startup.sh 运行 Tomcat,那么 Swing 应用程序将毫无问题地启动。如果我了解更多信息,我会更新。