简体   繁体   中英

Running Java GUI applications through a Linux terminal

I'm on Ubuntu trying to run a Java GUI application through the terminal. I'm getting a HeadlessException when I try to run it. Below is the stack trace:

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)

I tried export DISPLAY=:0.0 before running the application, but that had no effect. How do you run a GUI application through Bash?

I guess you only have the default-jre-headless package installed. Check that you have default-jre .

I had this exception. I tried setting the headless setting to false, and it worked for me:

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

If you run your application on Ubuntu by the command:

java -jar MyJar.jar

then OpenJDK is used. Try to install the Sun JDK and run your application like:

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

If you don't have a GUI, you can't run it. Are you running remotely (for example, SSH)?

If so, look into the system that you're using for remote access. For example, with SSH you want to look at the AllowX11Forwarding setting (SSH FAQ entry) .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM