Running Java GUI applications through a Linux terminal
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
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, 2020Comments
-
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?