Running Java GUI applications through a Linux terminal

37,349

Solution 1

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

Solution 2

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'

Solution 3

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
Share:
37,349
Tyler Treat
Author by

Tyler Treat

Managing Partner at Real Kinetic helping companies build cloud software. Interested in distributed systems, messaging infrastructure, and resilience engineering.

Updated on February 10, 2020

Comments

  • Tyler Treat
    Tyler Treat about 4 years

    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?