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

93

J'ai un script utilisant java pour me connecter pour afficher X11 dans le port 10.0 à 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 comme:

export DISPLAY=:10.0
export DISPLAY=localhost:10.0

J'ai essayé aussi 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? Je pensais que le serveur X ne fonctionnait pas, alors j'ai essayé startxqu'il s'exécute sur ce port

mon système est l'édition 10.04 du serveur Ubuntu

Elteroooo
la source

Réponses:

35

Cette commande m'a aidé à résoudre le problème:

export DISPLAY=:0
Maryam Saeidi
la source
40
unset DISPLAYm'a aidé (avec export DISPLAY=:0j'ai eu l'erreurCan't connect to X11 window server using ':0'
beluchin
1
Où l'avez-vous mis
Spektakulatius
1
bien parfois - cela ne fonctionnera pas sous Linux, alors il est bon d'installer Xvfb avec apt et de l'exécuter sur n'importe quel écran comme: Xvfb: 1, puis définissez la variable en phase de construction - export DISPLAY =: 1 -> cela fonctionne parfaitement.
Pankaj Kumar Katiyar
S'il vous plaît, lisez: this stackoverflow.com/questions/20607777/…
Felix Aballi
57

Vous devez spécifier le -Djava.awt.headless=trueparamètre au démarrage.

Michael-O
la source
Merci beaucoup mais où dois-je spécifier cela exactement?
Elteroooo
1
Exception dans le thread "main" java.awt.He adlessException à java.awt.GraphicsEnvironment.checkHeadless (GraphicsEnvironment.java:1 73)
Elteroooo
Exécutez-vous un gestionnaire de sécurité? Si tel est le cas, vous devrez peut-être accorder la permission.
Michael-O
1
merci, le problème était que le serveur X fonctionne dans un autre port
Elteroooo
1
Le programme du demandeur veut faire ij.io.Opener.openJpegOrGif, on peut deviner que cela nécessite probablement une interface graphique. Donc sans tête se traduirait par une autre erreur: java.awt.HeadlessException.
Nicolas Raoul
40

Supprimer la variable DISPLAY

unset DISPLAY

Cela aide dans la plupart des cas (par exemple le démarrage de serveurs d'applications ou d'autres outils basés sur Java) et évite de modifier autant de lignes de commande.

Il peut également être confortable de l'ajouter au .bash_profile pour un utilisateur dédié du serveur d'applications / des outils.

bebbo
la source
1
cela ne m'a pas aidé du tout. J'ai eu ceci: AWT ne peut pas se connecter au serveur de fenêtre X11 en utilisant ...
Pankaj Kumar Katiyar
Si votre application utilise awt, vous devez définir correctement DISPLAY. Ceci est pour les applications n'utilisant pas awt.
bebbo
Lorsque vous jouez avec cela, assurez-vous de redémarrer mobaXterm après avoir ajouté la commande unset dans votre bashfile. Étant donné que la variable Display sera définie à partir d'avant et que le simple fait d'exécuter votre fichier bash ne changera rien.
mrk
15

Je pense que vous travaillez en mode sudo.Veuillez passer en mode utilisateur et réessayer

Harsh V Pillai
la source
4
C'était aussi mon problème. Cela semble étrange de ne pas pouvoir fonctionner en tant que root, non?
javajavajava
Pourquoi je ne peux pas utiliser sudo?
Andrea Borgogelli Avveduti
@javajavajava yup
Harsh V Pillai
9

Si quelqu'un essaie d'exécuter les tests unitaires automatisés via maven-surefire-plugin sur CI (jenkins, ..), et obtient l'erreur mentionnée ci-dessus, assurez-vous de mettre à jour la configuration de votre plugin infaillible:

<plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-surefire-plugin</artifactId>
     <version>${maven-surefire-plugin.version}</version>
     <configuration>
            <systemPropertyVariables>
                <java.awt.headless>true</java.awt.headless>
            </systemPropertyVariables>
      </configuration>
</plugin>
Puneetsri
la source
1
comment le faire dans gradle et aussi comment y définir la valeur de la propriété.
Sobhit Sharma
7

Cela résoudra le problème:

/usr/bin/java -Djava.awt.headless=true $Your_program
grepit
la source
N'a pas réparé le mien
Alex Shnyrov
1
Cela a fonctionné pour moi. Je vous remercie. J'obtenais l'erreur parce que j'utilise poi.
dev4life le
6

Pour moi, la connexion en tant que -Y au lieu de -X a fonctionné.

Si vous avez un X11 non approuvé comme indiqué ci-dessous, essayez plutôt l'option -Y (si vous faites confiance à l'hôte):

Avertissement : la configuration du transfert X11 non approuvée a échoué: les données de clé xauth ne sont pas générées

Loknath
la source
4

Après plusieurs jours d'efforts vains d'installation de Glassfish sur Raspberry Pi 2 avec fedora sans tête 22, ci-dessous a travaillé pour moi sans accroc

 unset DISPLAY
java -Djava.awt.headless=true -jar glassfissh-installer-v2ur2-b04-linux.jar

obtenu mon aide d' ici

N_E
la source
3

Premièrement: démarrez XQuartz

Deuxième: ssh -X utilisateur @ adresse_ip

...: démarrez votre processus

si vous ssh puis démarrez XQuartz, vous obtiendrez cette erreur

Aleks Tkachenko
la source
3

Cela a résolu mon problème

xhost +

mais sachez que cela xhost +désactive complètement l'authentification et permet à tout le monde d'accéder à toutes les applications sur votre écran.

xhost +si:localuser:root semble fonctionner de la même manière avec une authentification appropriée.

Bercove
la source
2

J'utilisais Xming et j'ai eu une erreur similaire. Les étapes suivantes ont été prises pour résoudre le problème:

  1. Au lancement de Xming, cochez la case pas de contrôle d'accès.
  2. Dans putty a exécuté la commande suivante: DISPLAY=XXX.XXX.XXX.XX:0.0; export DISPLAY

Remplacez XXX.XXX.XXX.XXpar votre adresse IP.

Shashank
la source
Je suis dans la même configuration, mais cela n'a pas fonctionné. J'avais besoin d'ajouter l'IP exécutant X11 dans le fichier X0.hosts
Christophe Moine
2

Commencez par faire ceci soit dans la phase de construction de Jenkins si vous utilisez, soit dans / etc / profile:

unset DISPLAY
export DISPLAY=:0

puis définissez cette propriété en code java ou en utilisant maven: -Djava.awt.headless = false

Pankaj Kumar Katiyar
la source
2

Résolu. Je viens de me déconnecter et de me connecter avec xorg!

Nilesh
la source
1
export DISPLAY =: 0 ou export DISPLAY =: 1 n'a pas fonctionné pour moi. La déconnexion et la connexion ont résolu le problème pour moi.
Optimus
1

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

Koti Reddy
la source
pouvez-vous peut-être expliquer un peu plus comment cela fonctionnerait? (Je n'ai jamais utilisé de mastic)
mrk
1

Dans mon cas, il n'y avait plus d'espace dans ma machine et j'ai été confronté au même problème. Parfois, cela pourrait être le problème de l'espace. Vérifiez l'espace dans votre environnement Linux / Unix et assurez-vous que votre machine dispose de suffisamment d'espace.

user3016200
la source
1

Si vous essayez d'exporter l'affichage à l'aide de su et que cela ne fonctionne toujours pas. C'est ce qui a fonctionné pour moi. Essayez le transfert X11 pour les utilisateurs sudo.

Connectez l'hôte distant à l'aide de l'option -X avec ssh.

# ssh -X root@remote-host

Maintenant, listez le jeu de coockie pour l'utilisateur actuel.

# xauth list $DISPLAY
    node01.thegeekdiary.com/unix:10  MIT-MAGIC-COOKIE-1  dacbc5765ec54a1d7115a172147866aa
# echo $DSIPLAY
    localhost:10.0

Basculez vers un autre compte utilisateur en utilisant sudo. Ajoutez le cookie de la sortie de commande ci-dessus à l'utilisateur sudo.

# sudo su - [user]
# xauth add node01.thegeekdiary.com/unix:10  MIT-MAGIC-COOKIE-1  dacbc5765ec54a1d7115a172147866aa

Exportez à nouveau l'affichage de l'étape 2 pour l'utilisateur sudo. Essayez la commande xclock pour vérifier si les applications client x fonctionnent comme prévu.

# export DISPLAY=localhost:10.0

source: https://www.thegeekdiary.com/how-to-set-x11-forwarding-export-remote-display-for-users-who-switch-accounts-using-sudo/

Mohamed ELJ
la source
1

vérifiez si la variable $ DISPLAY est définie ou non, avec la commande ci-dessous:

echo $ DISPLAY

si la variable d'affichage n'est pas définie, exécutez la commande ci-dessous pour définir, (même si elle est définie, vous pouvez en avoir en dessous pour votre session)

export DISPLAY =: 0.0

dans le mastic ont également l'emplacement d'affichage x comme: 0.0

Naresh A
la source
0

Je rencontre la même erreur avec vous lorsque j'exécute la commande jconsole à distance. Je souhaite modifier un paramètre sur jconsole qui s'exécute sur un hôte Linux distant, je peux me connecter à l'hôte en utilisant secureCRT, le terminal jette ces informations d'erreur. Heureusement, lorsque vous utilisez le mastic, tout va bien. Bizarre....

David
la source
0

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

user2945593
la source
0

Si vous démarrez l'application sur un serveur distant alors que vous êtes connecté par ssh, une autre façon serait de démarrer ssh avec le -xparamètre ou d'ajouter ForwardX11 novotre fichier /etc/ssh/ssh_config. Dans ce cas, ssh ne créera pas la variable d'environnement DISPLAY.

user3132194
la source
0

Si vous déclenchez votre code à partir de Jenkins, l'activation de l'option «Démarrer Xvfb avant la compilation et l'arrêter après» peut aider. Ça m'a aidé.

Akshay Maldhure
la source
0

passez à un autre utilisateur et essayez sauf root. ça marche pour moi.

Vinod Ranga
la source
0

Je ne me suis tout simplement pas déconnecté de root avant de lancer ./studio.sh Tout est réglé.

Praveen Kumar Verma
la source
0

Pour Ubuntu 17.10, installez le tampon de trame virtuel X (xvfb)

apt install xvfb

Et 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
cwilliamsz
la source
2
Maintenant, j'obtiens juste "Exception dans le thread" main "java.awt.AWTError: Impossible de se connecter au serveur de fenêtres X11 en utilisant 'localhost: 1.0' comme valeur de la variable DISPLAY." sur Ubuntu 16.04. Le binaire Xvfb semble maintenant se trouver dans / usr / bin, pas dans / usr / X11R6 / bin, mais me donne "Impossible d'ajouter l'écran 0 (EE)".
Chris Jenks
0

Dans mon cas, cette erreur n'était pas liée au port DISPLAY. J'essayais de charger un XML dans Windchill (un logiciel PLM) et je n'ai reçu que l'erreur ci-dessus sur le terminal. Dans un fichier journal, j'ai trouvé le rapport indiquant que mon fichier XML était corrompu . Peut-être que quelqu'un a un problème similaire et peut utiliser cette réponse.

LMN
la source
0

Le mien problème était avec le pare-feu. Désactivé temporairement.

[EDIT] Et, le nom d'hôte du serveur pointait vers une autre adresse IP. Réglez-le simplement sur localserver. strace xclockaidé à déboguer ce problème.

Seff
la source
0

J'ai résolu ce problème en me connectant à l'aide de Xorg. Par défaut, j'ai utilisé Wayland. Il semble que Wayland élimine la plupart des défauts de conception du Xorg, il a ses propres problèmes.entrez la description de l'image ici

Easwer AP
la source
-1

Pour moi, le problème était que xorg-x11-xauth n'était pas installé. Je l'ai installé et cela a fonctionné.

Les packages que j'ai maintenant sont:

  • libX11-common-1.6.3-2.el6.noarch
  • libX11-1.6.3-2.el6.i686
  • libX11-1.6.3-2.el6.x86_64
  • xorg-x11-drv-ati-firware-7.6.1-2.el6.noarch
  • xorg-x11-xauth-1.0.9-1.el6.x86_64
Kwokman Chung
la source