2011-09-20 86 views
1

有什麼辦法可以讓java忽略代碼中的任何調用到X11系統?我在一臺沒有窗口管理器的服務器上運行應用程序。當我運行這個應用程序時,我得到java.awt.HeadlessException。我已經嘗試設置-Djava.awt.headless = true/System.setProperty(「java.awt.headless」,true)。沒有運氣。使java忽略對X11的調用

我是否真的必須手動刪除所有與圖形系統進行交互的代碼行或者有更優雅的方式?謝謝。在無頭模式

+0

你可以安裝像http://www.tightvnc.com/虛擬窗口管理器。這將繞開這些問題。 – oers

+0

我做到了。然後我設置DISPLAY來匹配VNC桌面,但是我仍然得到java.awt.HeadlessException。 – azerIO

+2

這可能聽起來很愚蠢,但您使用的是什麼版本的JVM。看來,直到(並且包括一些)版本1.4在Sun/Oracle jdk上有一個bug:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4281163。另外fi你正在使用另一個jdk,看起來它本身並沒有這個bug(顯然蘋果JDK有長久的bug) –

回答

0

使用Java Java headless mode

+1

您無法在無頭模式下實例化頂級容器。 – trashgod

+0

所以唯一的解決方案是手動找到所有X11呼叫地點並發表評論? – azerIO

+0

不知道slackware,但VNC可以在很多平臺上運行,並且可以[while](http://www.jfree.org/forum/viewtopic.php?f=3&t=1012&hilit=X11+DISPLAY + BufferedImage) 。 – trashgod