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

1voto

Koti Reddy Points 23

Michael-O a donné une approche utile pour résoudre le problème. Une autre façon de résoudre ce problème est de démarrer le serveur avec la console Putty.

1voto

user3016200 Points 11

Dans mon cas, il n'y avait plus d'espace dans ma machine et j'ai rencontré le même problème. Parfois, il peut s'agir d'un problème d'espace. Vérifiez l'espace disponible dans votre environnement Linux/Unix et assurez-vous que votre machine dispose de suffisamment d'espace.

1voto

cwilliamsz Points 414

Pour Ubuntu 17.10 Installer X virtual frame buffer (xvfb)

apt install xvfb

Et j'ai ajouté ces lignes au fichier /etc/profile...

# Start the X virtual frame buffer (Xvfb)
if [ -f /usr/X11R6/bin/Xvfb ]; then
/usr/X11R6/bin/Xvfb :1 -screen 0 1366x768x32
fi

# Set the DISPLAY variable for the X virtual frame buffer (Xvfb)
export DISPLAY=localhost:1.0

1voto

M M Points 364

J'ai rencontré le même problème sur le serveur Linux sur lequel je travaillais. La connexion de java à un écran X11 fonctionnait sur le nœud principal, mais pas sur les autres. Après avoir contacté l'administrateur, il s'est avéré que la version actuelle de notre système de planification des tâches (SLURM) ne prenait pas en charge la transmission X11. Il a fallu mettre à jour SLURM (les versions plus récentes de SLURM le prennent en charge) pour que cela fonctionne.

0voto

janex Points 347

La seule façon de le faire fonctionner est de lancer le script avec un template. par exemple sudo ./glassfish-3.1.2.2-unix.sh -s template

Cela permet d'installer Glassfish en mode silencieux. http://docs.oracle.com/cd/E18930_01/html/821-2427/ghmva.html

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