«Pas de variable X11 DISPLAY» - qu'est-ce que cela signifie?

102

J'essaye d'installer une application Java sur ma machine Linux (Slackware).

J'ai reçu l'erreur suivante et je ne la comprends pas.

Pouvez-vous me conseiller comment aborder le problème? Je vous remercie.

Voici ce que j'obtiens: (Je vois qu'une variable X11 DISPLAY doit être définie, mais quelle valeur dois-je lui donner et comment?)

~$ 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
la source
J'ai le même problème, cela fonctionne parfaitement sur la console mais quand j'utilise eclipse, il lance la même exception, je mets même ces lignes de code: Process proc_exporting = Runtime.getRuntime (). exec ("sudo export DISPLAY =: 0.0") ; ne fonctionne toujours pas
hb.Sara
3
Aucune des réponses ne donne les informations nécessaires pour résoudre ce problème lors de la connexion à distance à une console via puTTY. Toute réponse qui aborde SSH n'explique pas vraiment comment le faire fonctionner. Quelqu'un connaît-il une question qui répond à cela?

Réponses:

121

Si vous êtes sur l'écran principal, alors

export DISPLAY=:0.0

ou si vous utilisez csh ou tcsh

setenv DISPLAY :0.0

avant d'exécuter votre application.

En fait, je suis surpris qu'il ne soit pas réglé automatiquement. Essayez-vous de démarrer cette application à partir d'un terminal non graphique? Sinon, avez-vous modifié le .profile, .login, .bashrc ou .cshrc par défaut?

Notez que régler l'AFFICHAGE sur: 0.0 suppose que vous êtes assis à l'écran principal, comme je l'ai dit, ou du moins que l'écran principal est connecté à votre identifiant d'utilisateur. S'il n'est pas connecté ou s'il s'agit d'un ID utilisateur différent, cela échouera.

Si vous venez d'une autre machine et que vous êtes sur l'écran principal de cette machine et qu'elle exécute X, vous pouvez utiliser "ssh -X hostname" pour vous connecter à cet hôte, et ssh retransmettra l'affichage X . ssh s'assurera également que la variable d'environnement DISPLAY est correctement définie (à condition qu'elle ne soit pas perturbée dans les différents fichiers de points mentionnés ci-dessus). Dans une session "ssh -X", la variable d'environnement DISPLAY aura une valeur comme "localhost: 11.0", qui pointera vers le socket que ssh tunnelise vers votre boîte locale.

Paul Tomblin
la source
Salut, merci beaucoup, le premier a fonctionné pour moi. Oui, je le démarre depuis un terminal non graphique.
user42155
On dirait cependant qu'il veut accéder à l'affichage graphique. Veillez à ne pas l'exécuter lorsque l'affichage graphique n'est pas disponible ou qu'il appartient à un autre ID utilisateur.
Paul Tomblin
3
notez que cela a fonctionné parce que vous êtes / étiez sur la console. si vous étiez sur un autre terminal, vous devrez avoir un serveur X en cours d'exécution sur le terminal puis paramétrer l'environnement pour qu'il pointe vers votre machine (export DISPLAY = 'hostname of pauls terminal': 0.0 par exemple)
KevinDTimm
@kevindtimm, bon point - je vais incorporer les informations de @ Mikeage sur ssh -X dans ma réponse.
Paul Tomblin
1
Si vous devez exécuter une tâche automatisée nécessitant une connexion à un serveur X, vous pouvez consulter xvfb, qui crée un serveur X virtuel. Ceci est très utile pour certains tests par lots ou l'exécution de tests.
Wichert Akkerman
10

Exécutez-vous cela à partir d'un environnement X11? Vous pouvez utiliser une fenêtre de terminal, mais elle doit être dans X (soit après une connexion graphique, soit en exécutant startx).

Si vous êtes déjà dans un environnement graphique, essayez d'exporter DISPLAY =: 0 pour les shells comme bash (bash, sh, etc.) ou setenv DISPLAY: 0 pour les shells basés sur le shell C (csh, tcsh, etc.)

Si vous vous êtes connecté depuis une autre machine via SSH, vous utilisez l'option -X pour afficher l'interface graphique sur la machine sur laquelle vous êtes assis (à condition qu'il y ait un serveur X en cours d'exécution là-bas (comme xming pour Windows, et votre Linux X standard serveur).

Mikeage
la source
Salut, j'exécute startx.
user42155
Ah oui, Slackware. Est-il toujours aussi nu que lors de ma dernière utilisation il y a 10 ans?
Paul Tomblin
Il démarre toujours par défaut au niveau d'exécution 3. Bien sûr, si vous lui dites de démarrer au niveau d'exécution 5, vous obtiendrez un joli menu de connexion KDM en supposant que vous avez installé KDE.
Adam Jaskiewicz
Merci! sur CentOS et SSH (putty) utilisés: export DISPLAY=:0
jacktrades
8

vous devez activer le transfert X11 dans votre PuTTy

pour ce faire, ouvrez PuTTy, allez dans Connection => SSH => Tunnels et cochez la case Enable X11 forwarding

Également sudo vers le serveur et exportez la variable ci-dessous ici IP est l'adresse IP de votre machine locale

export DISPLAY=10.75.75.75:0.0

entrez la description de l'image ici

Girdhar Singh Rathore
la source
4

Une autre chose qui pourrait être le problème dans un cas similaire à celui décrit - X n'est pas transmis et $ DISPLAY n'est pas défini lorsque le programme 'xauth' n'est pas installé sur le côté distant. Vous pouvez voir qu'il le recherche lorsque vous exécutez "ssh -Xv adresse_ip", et, s'il n'est pas trouvé, échoue, ce qui n'est pas vu à moins que vous n'activiez le mode verbeux (un échec IMO). Vous pouvez généralement trouver «xauth» dans un package du même nom.

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

Très facile, j'ai eu le même problème, puis j'ai téléchargé et installé une application qui aiderait à afficher, puis j'ai corrigé l'erreur.

Téléchargez cette application xming:

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

Installez, puis utilisez les paramètres sur ce lien:

http://www.geo.mtu.edu/geoschem/docs/putty_install.html ou suivez ces étapes:

Installation / configuration de PuTTy et Xming

Une fois que PuTTy et Xming ont été téléchargés sur le PC, installez-les selon leurs instructions respectives.

Configurer Xming

Une fois Xming installé, exécutez l'application appelée 'XLaunch' et vérifiez que les paramètres sont comme indiqué:

  • sélectionnez les entrées par défaut dans la fenêtre des paramètres d'affichage, cliquez sur suivant
  • cliquez sur suivant dans la fenêtre Type de session.
  • cliquez sur suivant dans la fenêtre Paramètres supplémentaires (la case à cocher du presse-papiers est vraie)
  • enregistrez la configuration et cliquez pour terminer.

Configurer PuTTy

Après avoir installé PuTTy, double-cliquez sur l'icône PuTTy sur le bureau et configurez comme indiqué:

Cela montre la création d'un profil de connexion puis son enregistrement.

  • Sur ssh -> X11, cliquez sur la case à cocher pour activer le transfert X11.
  • dans la zone de texte de l'emplacement d'affichage X, tapez localhost: 0.0

enregistrez le profil puis connectez-vous à distance au serveur pour tester.

À votre santé!!!

Peter Azuka Molokwu
la source
Veuillez inclure les informations essentielles des liens dans la réponse elle-même, car ils pourraient finir par disparaître, rendant la réponse inutile.
plamut le
2

Il existe de nombreuses façons de procéder. J'ai fait quelque chose ci-dessous qui me convenait et fonctionne toujours bien.

  1. Sur votre serveur distant, assurez-vous d'installer xorg-x11-xauth, xorg-x11-font-utils, xorg-x11-fonts.
  2. Exécutez le serveur Xming sur votre bureau local
  3. Sur putty, avant ssh vers le serveur, activez le transfert X11 et définissez l'emplacement d'affichage sur localhost: 0.0
  4. Sur le serveur, le fichier .Xauthority est généré et notez que la variable DISPLAY est déjà définie.

    $ xauth liste

    $ xauth ajouter

Pour le tester, tapez xclock ou xeyes

Remarque : pour changer d'utilisateur, copiez le fichier .Xauthority dans le répertoire personnel de l'utilisateur respectif et exportez également la variable DISPLAY de cet utilisateur.

Naseer-shaik
la source
0

J'ai eu le même problème dans Ubuntu 14.04.01 lorsque j'ai essayé d'installer JDK 8 et Netbeans si je lance le script dans un terminal Byobu (peut-être qu'avec Screens, cela se passe de la même manière).

Quittez simplement Byobu et (dans un terminal graphique) exécutez le script.

victe
la source
0

Vérification initiale.

1) Lorsque vous exportez l'AFFICHAGE vers une autre machine, assurez-vous d'avoir entré la commande xhost +sur cette machine. Cette commande permet à une autre machine d'exporter leur AFFICHAGE sur cette machine. Il peut y avoir des contraintes de sécurité, sachez-le. Besoin de vérifier ssh -X MachineIPne nécessitera pas xhost +?

2) Parfois JCONSOLE, ne montrera pas tout son processus, car ces processus JVM peuvent s'exécuter avec un utilisateur différent et vous exportez l'AFFICHAGE avec un autre utilisateur. donc mieux suivreCD_DIR>sudo ./jconsole

3) Dans WAS (WEBSPHERE); jconsole ne pourra pas connecter son processus de serveur java, cette fois-ci, allez jusqu'au lien, puis essayez de le connecter. Cela a fonctionné pour moi. Peut-être que cette page initialise certaines variables pour permettre à jconsole de se connecter à ce serveur.

Console WAS> Serveurs d'applications> serveur1> Définition de processus> Machine virtuelle Java


J'ai rencontré le même problème avec la machine AIX (où l'interface de ligne de commande est uniquement disponible, il n'y a pas d'interface utilisateur d'affichage). J'ai résolu en installant

NX Client pour Windows

Étape 1: Grâce à cette machine Windows, je me suis connecté avec une boîte unix où la console GUI est disponible.
Étape 2: SSH à la boîte AIX à partir de cette boîte UNIX.
Étape 3: définissez DISPLAY comme "export DISPLAY = UNIXMACHINE: NXClientPORTConnectedMentionedOnTitle"
Étape 4: Maintenant, si nous lançons des programmes qui nécessitent DISPLAY; il sera lancé sur cette box UNIX.

VNC

Si vous avez installé VNC sur la boîte UNIX où l'affichage est disponible; alors Windows et NX Client ne sont pas nécessaires. Étape 1: Utilisez VNC pour vous connecter à la boîte Unix où la console GUI est disponible.
Étape 2: SSH à la boîte AIX à partir de cette boîte UNIX.
Étape 3: réglez DISPLAY comme "export DISPLAY = UNIXMACHINE: VNCPORT"
Étape 4: Maintenant, si nous lançons des programmes qui nécessitent DISPLAY; il sera lancé sur cette box UNIX.

AUTRE

Étape 1: SSH vers la boîte AIX à partir de cette boîte UNIX.
Étape 2: réglez DISPLAY comme "export DISPLAY = UNIXMACHINE: VNCPORT"
Étape 3: Maintenant, si nous lançons des programmes qui nécessitent DISPLAY; il sera lancé sur cette box UNIX.

Kanagavelu Sugumar
la source
0

Pour ceux qui essaient de faire fonctionner une application X Window à partir de Windows à partir de Linux:

Ce qui a fonctionné pour moi a été de configurer le serveur xming sur ma machine Windows, de définir l'option de transfert X11 dans putty lorsque je me connecte à l'hôte Linux et de mettre mon adresse IP Windows avec le port d'affichage, puis la variable d'affichage avec mon adresse IP Windows: 0.0

N'oubliez pas d'ajouter l'adresse IP de l'hôte Linux au fichier X0.hosts pour vous assurer que le serveur xming accepte le trafic de cet hôte. Il m'a fallu un certain temps pour comprendre cela.

Subramaniam Ramasubramanian
la source
-3

N'oubliez pas d'exécuter "host +" sur votre machine d'affichage "home", et lorsque vous ssh sur la machine vous faites "ssh -x hostname"

Tihamer
la source
14
Je recommanderais fortement de ne pas utiliser "xhost +" car il désactive efficacement toute sécurité sur votre serveur X. ssh est suffisamment intelligent pour utiliser xauth pour configurer automatiquement l'authentification X11, il ne devrait donc pas être nécessaire d'utiliser xhost.
Wichert Akkerman
Cela devrait être un commentaire, pas un message. Ce n'est pas parce que vous ne pouvez pas commenter que vous devez faire un mauvais post.
Elliot A.