“Sin variable DISPLAY X11”: ¿qué significa?

102

Estoy intentando instalar una aplicación Java en mi máquina Linux (Slackware).

Recibí el siguiente error y no lo entiendo.

¿Podría aconsejarme cómo abordar el problema? Gracias.

Esto es lo que obtengo: (Veo que se debe configurar alguna variable de PANTALLA X11 , pero ¿qué valor debo darle y cómo?)

~$ java -jar gate-5.0-beta1-build3048-installer.jar
- ERROR -

java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
at java.awt.GraphicsEnvironment.checkHeadless(Graphic sEnvironment.java:159)
at java.awt.Window.<init>(Window.java:407)
at java.awt.Frame.<init>(Frame.java:402)
at net.sourceforge.mlf.metouia.borders.MetouiaDotsBuf fer.<init>(MetouiaDotsBuffer.java:105)
at net.sourceforge.mlf.metouia.borders.MetouiaDots.<i nit>(MetouiaDots.java:66)
at net.sourceforge.mlf.metouia.borders.MetouiaToolBar Border.<init>(MetouiaToolBarBorder.java:49)
at net.sourceforge.mlf.metouia.MetouiaLookAndFeel.ini tComponentDefaults(MetouiaLookAndFeel.java:241)
at javax.swing.plaf.basic.BasicLookAndFeel.getDefault s(BasicLookAndFeel.java:130)
at javax.swing.plaf.metal.MetalLookAndFeel.getDefault s(MetalLookAndFeel.java:1591)
at javax.swing.UIManager.setLookAndFeel(UIManager.jav a:537)
at javax.swing.UIManager.setLookAndFeel(UIManager.jav a:581)
at com.izforge.izpack.installer.GUIInstaller.loadLook AndFeel(GUIInstaller.java:373)
at com.izforge.izpack.installer.GUIInstaller.<init>(G UIInstaller.java:116)
at sun.reflect.NativeConstructorAccessorImpl.newInsta nce0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInsta nce(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newI nstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Construc tor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:30
at com.izforge.izpack.installer.Installer.main(Instal ler.java:62)
user42155
fuente
Tengo el mismo problema, funciona perfectamente en la consola, pero cuando uso eclipse arroja la misma excepción, incluso puse esas líneas de código: Process proc_exporting = Runtime.getRuntime (). exec ("sudo export DISPLAY =: 0.0") ; todavía no funciona
hb.Sara
3
Ninguna de las respuestas proporciona la información necesaria para resolver este problema cuando se conecta a una consola de forma remota a través de puTTY. Cualquier respuesta que aborde SSH en realidad no explica cómo hacer que funcione. ¿Alguien sabe de una pregunta que aborde esto?

Respuestas:

120

Si estás en la pantalla principal, entonces

export DISPLAY=:0.0

o si está usando csh o tcsh

setenv DISPLAY :0.0

antes de ejecutar su aplicación.

De hecho, me sorprende que no se configure automáticamente. ¿Está intentando iniciar esta aplicación desde un terminal no gráfico? Si no es así, ¿ha modificado el .profile, .login, .bashrc o .cshrc predeterminado?

Tenga en cuenta que configurar la PANTALLA en: 0.0 presupone que está sentado en la pantalla principal, como dije, o al menos que la pantalla principal está conectada a su identificación de usuario. Si no ha iniciado sesión o es un ID de usuario diferente, esto fallará.

Si viene de otra máquina, y está en la pantalla principal de esa máquina y está ejecutando X, entonces puede usar "ssh -X nombre de host" para conectarse a ese host, y ssh reenviará la pantalla X hacia atrás. . ssh también se asegurará de que la variable de entorno DISPLAY esté configurada correctamente (siempre que no se esté alterando en los diversos archivos dot que mencioné anteriormente). En una sesión "ssh -X", la variable de entorno DISPLAY tendrá un valor como "localhost: 11.0", que apuntará al socket que ssh está haciendo un túnel a su caja local.

Paul Tomblin
fuente
Hola, muchas gracias, el primero me funcionó. Sí, lo estoy iniciando desde un terminal no gráfico.
user42155
Sin embargo, parece que quiere acceder a la pantalla gráfica. Tenga cuidado de no ejecutarlo cuando la pantalla gráfica no esté disponible o pertenezca a otro ID de usuario.
Paul Tomblin
3
tenga en cuenta que esto funcionó porque está / estaba en la consola. si estuviera en otra terminal, tendría que tener un servidor X ejecutándose en la terminal y luego configurar el entorno para que apunte a su máquina (export DISPLAY = 'hostname of pauls terminal': 0.0 por ejemplo)
KevinDTimm
@kevindtimm, Buen punto: voy a incorporar la información de @ Mikeage sobre ssh -X en mi respuesta.
Paul Tomblin
1
En caso de que necesite ejecutar una tarea automatizada que requiera conectarse a un servidor X, puede mirar xvfb, que crea un servidor X virtual. Esto es muy útil para algunas pruebas por lotes o pruebas en ejecución.
Wichert Akkerman
10

¿Está ejecutando esto desde un entorno X11? Puede usar una ventana de terminal, pero debe estar dentro de X (ya sea después de un inicio de sesión gráfico o ejecutando startx).

Si ya está dentro de un entorno gráfico, intente exportar DISPLAY =: 0 para shells tipo bash (bash, sh, etc.) o setenv DISPLAY: 0 para shells basados ​​en shell C (csh, tcsh, etc.)

Si se ha conectado desde otra máquina a través de SSH, use la opción -X para mostrar la interfaz gráfica en la máquina en la que está sentado (siempre que haya un servidor X ejecutándose allí (como xming para Windows y su Linux X estándar servidor).

Mikeage
fuente
Hola, estoy ejecutando startx.
user42155
Oh cierto, Slackware. ¿Sigue siendo tan básico como cuando lo usé por última vez hace 10 años?
Paul Tomblin
Todavía se inicia por defecto en el nivel de ejecución 3. Por supuesto, si le dice que se inicie en el nivel de ejecución 5, obtendrá un bonito menú de inicio de sesión de KDM asumiendo que instaló KDE.
Adam Jaskiewicz
¡Gracias! en CentOS y SSH (masilla) utilizado: export DISPLAY=:0
jacktrades
8

Debes habilitar el reenvío X11 en tu PuTTy

para hacerlo, abra PuTTy, vaya a Conexión => SSH => Túneles y marque la casilla Habilitar reenvío X11

También sudo al servidor y exporte la siguiente variable aquí IP es la IP de su máquina local

export DISPLAY=10.75.75.75:0.0

ingrese la descripción de la imagen aquí

Girdhar Singh Rathore
fuente
4

Una cosa más que podría ser el problema en un caso similar al descrito: X no se reenvía y $ DISPLAY no se establece cuando el programa 'xauth' no está instalado en el lado remoto. Puede ver que lo busca cuando ejecuta "ssh -Xv ip_address" y, si no se encuentra, falla, lo cual no se ve a menos que active el modo detallado (un IMO fallido). Por lo general, puede encontrar 'xauth' en un paquete con el mismo nombre.

Арсений Пичугин
fuente
3

Muy fácil, tuve este mismo problema, entonces lo que hice fue descargar e instalar una aplicación que ayudaría a mostrar y luego solucionó el error.

Descarga esta aplicación xming:

http://sourceforge.net/project/downloading.php ?

Instale, luego use la configuración en este enlace:

http://www.geo.mtu.edu/geoschem/docs/putty_install.html o siga estos pasos:

Instalación / configuración de PuTTy y Xming

Una vez que PuTTy y Xming se hayan descargado a la PC, instálelos de acuerdo con sus respectivas instrucciones.

Configurando Xming

Una vez que Xming esté instalado, ejecute la aplicación llamada 'XLaunch' y verifique que la configuración sea como se muestra:

  • seleccione Entradas predeterminadas en las ventanas Configuración de pantalla, haga clic en Siguiente
  • haga clic en siguiente en la ventana Tipo de sesión.
  • haga clic en siguiente en la ventana de parámetros adicionales (observe que la casilla de verificación del portapapeles es verdadera)
  • guarde la configuración y haga clic para finalizar.

Configuración de PuTTy

Después de instalar PuTTy, haga doble clic en el icono PuTTy en el escritorio y configure como se muestra:

Esto muestra cómo crear un perfil de inicio de sesión y luego guardarlo.

  • En ssh -> X11, haga clic en la casilla de verificación para habilitar el reenvío de X11.
  • en el cuadro de texto de ubicación de visualización X, escriba localhost: 0.0

guarde el perfil y luego conéctese de forma remota al servidor para probar.

¡¡¡Salud!!!

Peter Azuka Molokwu
fuente
Incluya la información esencial de los enlaces en la respuesta misma, ya que podrían desaparecer eventualmente, haciendo que la respuesta sea inútil.
plamut
2

Hay muchas maneras de hacer esto. Hice algo a continuación que me resultó conveniente y siempre funciona bien.

  1. En su servidor remoto, asegúrese de instalar xorg-x11-xauth, xorg-x11-font-utils, xorg-x11-fonts.
  2. Ejecute el servidor Xming en su escritorio local
  3. En putty, antes de enviar ssh al servidor, habilite el reenvío X11 y configure la ubicación de visualización en localhost: 0.0
  4. En el servidor, se genera el archivo .Xauthority y observe que la variable DISPLAY ya está configurada.

    $ xauth list

    $ xauth agregar

Para probarlo, escriba xclock o xeyes

Nota : Para cambiar de usuario, copie el archivo .Xauthority al directorio de inicio del usuario respectivo y también exporte la variable DISPLAY de ese usuario.

Naseer-shaik
fuente
0

Tuve el mismo problema en Ubuntu 14.04.01 cuando intenté instalar JDK 8 y Netbeans si lanzo el script dentro de una terminal Byobu (tal vez con Screens ocurra lo mismo).

Simplemente salga de Byobu y (en una terminal gráfica) ejecute el script.

victe
fuente
0

Verificación inicial.

1) Cuando esté exportando el DISPLAY a otra máquina, asegúrese de haber ingresado el comando xhost +en esa máquina. Este comando permite a otra máquina exportar su DISPLAY en esta máquina. Puede haber restricciones de seguridad, solo conózcalo. ¿Necesita verificar ssh -X MachineIPno requerirá xhost +?

2) Algunas veces JCONSOLEno mostrará todo su proceso, ya que esos procesos de JVM pueden ejecutarse con un usuario diferente y está exportando la PANTALLA con otro usuario. así que mejor sigueCD_DIR>sudo ./jconsole

3) En WAS (WEBSPHERE); jconsole no podrá conectar su proceso de servidor Java, esa vez solo vaya hasta el enlace, luego intente conectarlo. Esto funcionó para mí. Es posible que esta página esté inicializando algunas variables para permitir que jconsole se conecte con ese servidor.

Consola WAS> Servidores de aplicaciones> servidor1> Definición de proceso> Máquina virtual Java


Me he enfrentado al mismo problema con la máquina AIX (donde la interfaz de línea de comandos solo está disponible, no hay una interfaz de usuario de DISPLAY). Lo resolví instalando

Cliente NX para Windows

Paso 1: A través de esa máquina con Windows, me conecté con la caja Unix donde la consola GUI está disponible.
Paso 2: SSH al cuadro AIX desde ese cuadro UNIX.
Paso 3: configure DISPLAY como "export DISPLAY = UNIXMACHINE: NXClientPORTConnectedMentmentedOnTitle"
Paso 4: Ahora, si lanzamos algún programa que requiera DISPLAY; se lanzará en esta caja UNIX.

VNC

Si instaló VNC en la caja UNIX donde la pantalla está disponible; entonces no se requiere Windows ni NX Client. Paso 1: Use VNC para conectarse con la caja Unix donde la consola GUI está disponible.
Paso 2: SSH al cuadro AIX desde ese cuadro UNIX.
Paso 3: configure DISPLAY como "export DISPLAY = UNIXMACHINE: VNCPORT"
Paso 4: Ahora, si lanzamos algún programa que requiera DISPLAY; se lanzará en esta caja UNIX.

MÁS

Paso 1: SSH al cuadro AIX desde ese cuadro UNIX.
Paso 2: configure DISPLAY como "export DISPLAY = UNIXMACHINE: VNCPORT"
Paso 3: Ahora, si lanzamos algún programa que requiera DISPLAY; se lanzará en esta caja UNIX.

Kanagavelu Sugumar
fuente
0

Para aquellos que intentan que una aplicación X Window funcione desde Windows desde Linux:

Lo que funcionó para mí fue configurar el servidor xming en mi máquina con Windows, configurar la opción de reenvío X11 en putty cuando me conecto al host de Linux y pongo mi dirección IP de Windows con el puerto de pantalla y luego la variable de pantalla con mi dirección IP de Windows: 0.0

No olvide agregar la dirección IP de los hosts de Linux al archivo X0.hosts para asegurarse de que el servidor xming acepte el tráfico de ese host. Me tomó un tiempo darme cuenta de eso.

Subramaniam Ramasubramanian
fuente
-3

No olvide ejecutar "host +" en la máquina de visualización de su "inicio", y cuando ingrese a la máquina, haga "ssh -x nombre de host".

Tihamer
fuente
14
Recomiendo encarecidamente no utilizar "xhost +", ya que si desactiva efectivamente toda la seguridad en su servidor X. ssh es lo suficientemente inteligente como para usar xauth para configurar la autenticación X11 automáticamente, por lo que no debería ser necesario usar xhost.
Wichert Akkerman
Esto debería ser un comentario, no una publicación. El hecho de que no puedas comentar no significa que debas hacer una mala publicación.
Elliot A.