2011-03-09 13 views
11

Estoy en Ubuntu tratando de ejecutar una aplicación Java GUI a través de la terminal. Obtendré una excepción HeadlessException cuando intento ejecutarla. A continuación se muestra el seguimiento de pila:Ejecutar aplicaciones Java GUI a través de un terminal Linux

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) 

me trataron export DISPLAY=:0.0 antes de ejecutar la aplicación, pero que no tuvo ningún efecto. ¿Cómo se ejecuta una aplicación GUI a través de Bash?

Respuesta

26

Supongo que solo tiene instalado el paquete default-jre-headless. Compruebe que tiene default-jre.

+0

funcionó para mí, gracias. El paquete estaba allí con Ubuntu pero no instalado. "sudo apt-get install openjdk-6-jre" –

+1

funcionó para mí también. en mi caso solo tenía instalado default-jdk-headless. Por lo tanto, he instalado por defecto-JDK – Chandru

+1

sólo una observación: en las distribuciones/RedHat Fedora este paquete se llama 'java-NNN-OpenJDK' (donde NNN es el número de versión) – Maxim

0

Si no tiene una GUI, no puede ejecutarla. ¿Estás ejecutando de forma remota (por ejemplo, SSH)?

Si es así, busque en el sistema que está utilizando para el acceso remoto. Por ejemplo, con SSH, usted quiere ver la configuración AllowX11Forwarding(SSH FAQ entry).

+0

No soy remoto. Estoy ejecutando Ubuntu en mi computadora portátil. –

+0

Luego, si no tiene una GUI ejecutándose, no puede ejecutar una aplicación GUI. –

+0

TENGO una GUI. –

3

Si ejecuta su aplicación en Ubuntu por el comando:

java -jar MyJar.jar 

continuación, se utiliza OpenJDK. Intente instalar Sun JDK y ejecute su aplicación como:

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

Como alternativa, puede utilizar el comando 'actualización -java-alternatives' para seleccionar el Java predeterminado en su máquina. – SiKing

5

Tuve esta excepción. Intenté establecer la configuración sin cabeza en falso, y funcionó para mí:

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

Esto no funcionó para mí –

Cuestiones relacionadas