122 votes

Java ne peut pas se connecter au serveur de fenêtres X11 en utilisant 'localhost:10.0' comme valeur de la variable DISPLAY

J'ai un script utilisant java pour se connecter à l'affichage X11 dans le port 10.0 sur localhost.

mais j'obtiens toujours cette erreur

java.lang.InternalError: Can't connect to X11 window server using 'localhost:10.0' as the value of the DISPLAY variable.
    at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
    at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:62)
    at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:178)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:142)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:186)
    at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82)
    at sun.awt.X11.XToolkit.<clinit>(XToolkit.java:112)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:186)
    at java.awt.Toolkit$2.run(Toolkit.java:849)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:841)
    at ij.io.Opener.openJpegOrGif(Opener.java:367)
    at ij.io.Opener.openImage(Opener.java:220)
    at ij.io.Opener.openImage(Opener.java:249)
    at ij.io.Opener.open(Opener.java:116)
    at ij.IJ.open(IJ.java:1112)
    at ij.macro.Functions.open(Functions.java:2006)
    at ij.macro.Functions.doFunction(Functions.java:129)
    at ij.macro.Interpreter.doStatement(Interpreter.java:205)
    at ij.macro.Interpreter.doBlock(Interpreter.java:515)
    at ij.macro.Interpreter.runUserFunction(Interpreter.java:278)
    at ij.macro.Interpreter.getFactor(Interpreter.java:1200)
    at ij.macro.Interpreter.getTerm(Interpreter.java:1162)
    at ij.macro.Interpreter.getExpression(Interpreter.java:1145)
    at ij.macro.Interpreter.getBooleanExpression(Interpreter.java:881)
    at ij.macro.Interpreter.getLogicalExpression(Interpreter.java:857)
    at ij.macro.Interpreter.getBoolean(Interpreter.java:850)
    at ij.macro.Interpreter.doIf(Interpreter.java:829)
    at ij.macro.Interpreter.doStatement(Interpreter.java:217)
    at ij.macro.Interpreter.doBlock(Interpreter.java:515)
    at ij.macro.Interpreter.doStatement(Interpreter.java:241)
    at ij.macro.Interpreter.doIf(Interpreter.java:831)
    at ij.macro.Interpreter.doStatement(Interpreter.java:217)
    at ij.macro.Interpreter.doStatements(Interpreter.java:195)
    at ij.macro.Interpreter.run(Interpreter.java:99)
    at ij.macro.Interpreter.run(Interpreter.java:65)
    at ij.macro.Interpreter.run(Interpreter.java:75)
    at ij.plugin.Macro_Runner.runMacro(Macro_Runner.java:127)
    at ij.plugin.Macro_Runner.runMacroFile(Macro_Runner.java:112)
    at ij.IJ.runMacroFile(IJ.java:103)
    at ij.ImageJ.main(ImageJ.java:517)

J'ai tout essayé pour résoudre ce problème, par exemple :

export DISPLAY=:10.0
export DISPLAY=localhost:10.0

J'ai également essayé le port 0.0 mais j'obtiens toujours la même erreur.

après avoir essayé xhost

xhost +local:all
xhost:  unable to open display ""
xhost:  unable to open display ":10.0"

Comment puis-je résoudre ce problème ? J'ai pensé que le serveur X ne fonctionnait pas et j'ai donc essayé de le faire. startx Il indique qu'il fonctionne à ce port

Mon système est Ubuntu server edition 10.04

0voto

David Points 86

Je rencontre la même erreur que vous lorsque je lance la commande jconsole à distance. Je veux modifier un paramètre de la jconsole qui tourne sur un hôte Linux distant, je peux me connecter à l'hôte en utilisant le secureCRT, le terminal affiche cette information d'erreur. Heureusement, lorsque j'utilise Putty, tout va bien. Bizarre....

0voto

user2945593 Points 1

Si vous voyez cette erreur dans Hudson, essayez de supprimer le répertoire .java de votre répertoire personnel, cela peut fonctionner pour vous.

0voto

user3132194 Points 46

Si vous démarrez une application sur un serveur distant en étant connecté par ssh, une autre façon de procéder serait de démarrer ssh avec -x ou ajouter ForwardX11 no dans votre /etc/ssh/ssh_config . Dans ce cas, ssh ne créera pas la variable d'environnement DISPLAY.

0voto

Akshay Maldhure Points 356

Si vous déclenchez votre code depuis Jenkins, l'activation de l'option "Start Xvfb before the build, and shut it down after" pourrait vous aider. Cela m'a aidé.

0voto

Vinod Ranga Points 354

Changer d'utilisateur et essayer sauf Root. ça marche pour moi.

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