2012-04-09 62 views
1

我有一個小型的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
+0

作爲後續工作,感謝Tomcat用戶的電子郵件列表,我得以運行。出於某種原因,我不明白(還)作爲服務運行Tomcat阻止它連接到X服務器。如果我使用startup.sh直接運行Tomcat,那麼Swing應用程序無需啓動。如果我瞭解更多,我會更新。 – DeegC 2012-05-01 18:03:45

回答

0

嘗試設置 '-Djava.awt.headless =真正的',如果你還沒有準備好試過了。

+0

我不認爲我想要無頭模式,因爲我想運行一個GUI(即Spring)應用程序,它們不會以無頭模式運行。 – DeegC 2012-04-10 14:23:00

+0

在這種情況下,請確保先啓動了x-server,然後調用tomcat。 – bubbly 2012-04-10 15:55:37

+0

我的x-server正在運行,所以我懷疑在Tomcat的設置中有一些東西阻止它找到它。我假設出於安全原因,Tomcat會自動安裝,無法運行X應用程序。 – DeegC 2012-04-10 16:23:37

相關問題