我有一個小型的Swing監控應用程序,我想在Tomcat 6 JVM中運行。該應用程序是通過從Tomcat下運行的web服務動態加載監控類來啓動的。這適用於Windows,但在Linux(Ubuntu 10.4)我收到一些錯誤。從Tomcat運行Swing應用程序;無法使用DISPLAY =:0:0連接到X11
我的第一個錯誤是我得到一個HeadlessException。我沒有明確地使用headless模式,在搜索後我改變了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應用程序無需啓動。如果我瞭解更多,我會更新。 – DeegC 2012-05-01 18:03:45