126 votes

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

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

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

Pourriez-vous me conseiller sur la manière d'aborder le problème ? Merci.

Voici ce que j'obtiens : (Je vois que certains AFFICHAGE X11 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)

0 votes

J'ai le même problème, ça marche parfaitement sur la console mais quand j'utilise eclipse ça jette la même exception j'ai même mis ces lignes de code : Process proc_exporting =Runtime.getRuntime().exec("sudo export DISPLAY =:0.0") ; ça ne marche toujours pas.

3 votes

Aucune des réponses ne donne les informations nécessaires pour résoudre ce problème lors de la connexion à une console à distance via puTTY. Toutes les réponses qui traitent de SSH n'expliquent pas vraiment comment le faire fonctionner. Quelqu'un connaît-il une question qui traite de ce problème ?

142voto

Paul Tomblin Points 83687

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

export DISPLAY=:0.0

ou si vous utilisez csh ou tcsh

setenv DISPLAY :0.0

avant de lancer votre application.

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

Notez que le réglage de DISPLAY sur :0.0 présuppose que vous êtes assis devant l'écran principal, comme je l'ai dit, ou au moins que l'écran principal est connecté à votre ID utilisateur. S'il n'est pas connecté, ou s'il s'agit d'un identifiant différent, l'opération échouera.

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

0 votes

Bonjour, merci beaucoup, le premier a fonctionné pour moi. Oui, je le lance à partir d'un terminal non graphique.

0 votes

On dirait qu'il veut accéder à l'affichage graphique. Faites attention à ne pas l'exécuter lorsque l'écran graphique n'est pas disponible, ou qu'il appartient à un autre utilisateur.

3 votes

Notez que cela fonctionne parce que vous êtes/était sur la console. Si vous étiez sur un autre terminal, vous devriez faire tourner un serveur X sur le terminal et ensuite définir l'environnement pour qu'il pointe sur votre machine (export DISPLAY='hostname of pauls terminal':0.0 par exemple).

11voto

Vous devez activer Redirection X11 en vous PuTTy

Pour ce faire, ouvrez PuTTy, allez à Connexion => SSH => Tunnels et cocher la case Activer la redirection X11

Aussi sudo au serveur et exporter la variable ci-dessous ici IP est l'IP de votre machine locale

export DISPLAY=10.75.75.75:0.0

enter image description here

0 votes

Il fonctionne également pour la connexion via MobaXTerm.

10voto

Mikeage Points 3796

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

Si vous êtes déjà dans un environnement graphique, essayez export DISPLAY=:0 pour les shells de type bash (bash, sh, etc) ou setenv DISPLAY :0 pour les shells de type C (csh, tcsh, etc).

Si vous vous êtes connecté à partir d'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'un serveur X y tourne (comme xming pour Windows, et votre serveur X Linux standard).

0 votes

Ah oui, Slackware. Est-il toujours aussi simple qu'il l'était la dernière fois que je l'ai utilisé il y a 10 ans ?

0 votes

Il démarre toujours par défaut au niveau d'exécution 3. Bien sûr, si vous lui demandez de démarrer au niveau d'exécution 5, vous obtiendrez un joli menu de connexion KDM en supposant que vous ayez installé KDE.

0 votes

Merci ! sur CentOS et SSH (putty) utilisé : export DISPLAY=:0

5voto

Naseer-shaik Points 819

Il existe plusieurs façons de procéder. J'ai fait quelque chose de plus pratique pour moi et qui 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 de se connecter au serveur, activez la redirection X11 et définissez l'emplacement de l'affichage à localhost:0.0.
  4. Sur le serveur, le fichier .Xauthority est généré et on remarque que la variable DISPLAY est déjà définie.

    $ xauth list

    $ xauth add

Pour le tester, tapez xclock ou xeyes

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

0 votes

C'est ce qui a le mieux fonctionné pour moi.

4voto

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é du côté distant. Vous pouvez voir qu'il le recherche lorsque vous exécutez "ssh -Xv ip_address", et, s'il n'est pas trouvé, il échoue, ce qui n'est pas visible à moins d'activer le mode verbeux (un échec IMO). Vous pouvez généralement trouver 'xauth' dans un paquet du même nom.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X