2011-03-09 129 views
11

我在Ubuntu上嘗試通過終端運行Java GUI應用程序。當我嘗試運行它時,出現HeadlessException。下面是堆棧跟蹤:通過Linux終端運行Java GUI應用程序

Exception in thread "AWT-EventQueue-0" java.awt.HeadlessException 
    at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:173) 
    at java.awt.Window.<init>(Window.java:437) 
    at java.awt.Frame.<init>(Frame.java:419) 
    at java.awt.Frame.<init>(Frame.java:384) 
    at javax.swing.JFrame.<init>(JFrame.java:174) 
    at gui.ImageViewer.<init>(ImageViewer.java:34) 
    at displayrunner.DisplayRunner$1.run(DisplayRunner.java:15) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:226) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:647) 
    at java.awt.EventQueue.access$000(EventQueue.java:96) 
    at java.awt.EventQueue$1.run(EventQueue.java:608) 
    at java.awt.EventQueue$1.run(EventQueue.java:606) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:617) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:138) 

我運行程序前試過export DISPLAY=:0.0,但沒有任何效果。你如何通過Bash運行GUI應用程序?

回答

26

我想你只有安裝了default-jre-headless軟件包。檢查你是否有default-jre

+0

爲我工作,謝謝。軟件包在Ubuntu中,但沒有安裝。 「sudo apt-get install openjdk-6-jre」 – 2011-10-10 07:37:31

+1

也適用於我。在我的情況下,我只安裝了default-jdk-headless。所以,我安裝默認JDK – Chandru 2015-01-12 07:52:29

+1

只是一句話:在Fedora的/ RedHat分發這個包被稱爲 的Java-NNN-OpenJDK的' (其中NNN是版本號) – Maxim 2016-11-03 19:59:43

0

如果您沒有GUI,則無法運行它。你是否遠程運行(例如SSH)?

如果是這樣,請查看您用於遠程訪問的系統。例如,使用SSH,您需要查看AllowX11Forwarding設置(SSH FAQ entry)

+0

我不是遠程的。我在筆記本電腦上運行Ubuntu。 – 2011-03-09 05:51:48

+0

然後,如果您沒有運行GUI,則無法運行GUI應用程序。 – 2011-03-09 05:55:03

+0

我有一個GUI。 – 2011-03-09 05:58:13

3

如果運行在命令你的Ubuntu上的應用程序:

java -jar MyJar.jar 

則使用了OpenJDK。嘗試安裝Sun JDK並運行您的應用程序:

/usr/java/jre1.6.0_22/bin/java -jar MyJar.jar 
+0

另外,您也可以使用命令'更新-java-alternatives'在你的機器上選擇默認的Java。 – SiKing 2018-02-09 23:55:23

5

我有這個例外。我嘗試將無頭設置設置爲false,並且它對我有用:

export JAVA_TOOL_OPTIONS='-Djava.awt.headless=false' 
+1

這不適合我 – 2016-09-30 06:40:58