2012-08-03 18 views
5

我有一個使用WebRenderer作爲Java無頭瀏覽器的Java應用程序。 WebRenderer不需要xserver運行,我已通過卸載所有x11庫和xserver組件確認了這一點。Java應用程序拋出`Gtk-WARNING **:無法打開顯示:`即使不需要xserver

但是,在某些情況下,它會引發錯誤:Gtk-WARNING **: cannot open display:。經研究發現,它通常會在安裝了openJDK的系統中引發錯誤。另外,當前的Java版本來自Sun,但openJDK仍然安裝。爲了修復它,我需要卸載libatk-wrapper-javalibgtk2.0-0(它也刪除了default-jre,cedtea-netx,libatk-wrapper-java-jni,libgtk2.0-binopenjdk-6-jre)。

它也在openSUSE中引發同樣的錯誤(來自Sun的Java)。是否有任何方法可以解決這個錯誤,而無需啓動xserver或卸載一些可能需要的其他組件?任何幫助表示讚賞。

+2

你開始'Java的-Djava.awt.headless = TRUE;在JVM? – 2012-08-03 13:46:29

+0

我已經試過,但我得到這個:'沒有協議指定Gtk-WARNING **:無法打開顯示:' – KrispyDonuts 2012-08-03 13:50:50

回答

1

是的,請使用Xvfb

在一個終端中,您運行Xvfb :1。在另一個終端中,您運行DISPLAY=:1 ./yourapp

一些發行版有一個xvfb-run腳本,它可以在同一命令上啓動Xvfb和您的應用程序。

http://en.wikipedia.org/wiki/Xvfb

谷歌爲Xvfb瞭解更多信息

+0

但是,運行'Xvfb:1'啓動xserver,至少這就是它的樣子。這可能是一個備份解決方案,但現在我看到如果沒有運行xserver的方式。 – KrispyDonuts 2012-08-09 14:36:35

+0

是的,但是'Xvfb'的目標正是在這種情況下使用。它不會需要任何圖形卡或做你的記憶花哨的東西。它比你的普通「xserver」輕。要麼修復應用程序,要麼給它一個沒有屏幕的假xserver。 – pzanoni 2012-08-10 01:42:57

+0

嗯,我明白了。唯一的問題是,當我卸載所有的xserver庫和libgtk它工作正常。所以在那種情況下,我真的不明白爲什麼它在libgtk安裝時依賴於xserver。 – KrispyDonuts 2012-08-12 14:08:02

相關問題