Java ne peut pas se connecter au serveur de fenêtres X11 en utilisant 'localhost: 10.0' comme valeur de la variable D'affichage
J'ai un script utilisant java pour se connecter pour afficher X11 dans le port 10.0 à localhost
Mais je reçois 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 aussi 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 je pensais que le serveur X ne fonctionnait pas alors j'ai essayé {[3] } Son dit son fonctionnement sur ce port
Mon système est Ubuntu server edition 10.04
23 réponses
Cette commande m'a aidé à résoudre le problème:
export DISPLAY=:0
, Vous devez spécifier le -Djava.awt.headless=true
paramètre au moment du démarrage.
Supprimer la variable D'affichage
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 pour l'ajouter à la .bash_profile pour une application dédiée-serveur/outils utilisateur.
Je pense que vous travaillez en mode sudo.Veuillez passer en mode utilisateur et réessayer
Dans le cas où quelqu'un essaie d'exécuter les tests unitaires automatisés via Maven-surefire-plugin sur CI (jenkins,..), et obtenir l'erreur mentionnée ci-dessus, assurez-vous de mettre à jour votre configuration de plugin surefire:
<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>
Cela va le réparer:
/usr/bin/java -Djava.awt.headless=true $Your_program
Pour me connecter comme - Y au lieu de-X a fonctionné.
Si vous avez un X11 non approuvé comme indiqué ci-dessous, essayez l'indicateur-Y à la place (si vous faites confiance à l'hôte):
Avertissement : la configuration du transfert X11 non approuvée a échoué: les données de la clé xauth ne sont pas générées
Après plusieurs jours d'efforts futiles d'installation de glassfish sur raspberry pi 2 avec Headless fedora 22, ci-dessous a fonctionné pour moi sans accroc
unset DISPLAY
java -Djava.awt.headless=true -jar glassfissh-installer-v2ur2-b04-linux.jar
Obtenu mon aide de ici
Premier: démarrer XQuartz
Deuxième: SSH-x user@ip_address
...: démarrer votre processus
Si vous ssh puis démarrez XQuartz, vous obtiendrez cette erreur
Dans mon cas, il n'y avait plus d'espace dans ma machine et j'ai fait face 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 a suffisamment d'espace.
J'utilisais Xming et j'ai eu une erreur similaire. Les mesures suivantes ont été prises pour résoudre le problème:
- dans Xming launch cochez la case pas de contrôle d'accès.
- dans putty a exécuté la commande suivante:
DISPLAY=XXX.XXX.XXX.XX:0.0; export DISPLAY
Remplacez XXX.XXX.XXX.XX
par votre adresse IP.
La seule façon de le faire fonctionner était d'exécuter le script avec un modèle. par exemple sudo ./glassfish-3.1.2.2-unix.sh -modèle s
Cela installe Glassfish en mode silencieux. http://docs.oracle.com/cd/E18930_01/html/821-2427/ghmva.html
Je rencontre la même erreur avec vous lorsque j'exécute la commande jconsole à distance. Je veux modifier un paramètre à jconsole qui s'exécute sur un hôte Linux distant, je peux me connecter à l'hôte utiliser le secureCRT, le terminal lance cette information d'erreur. Heureusement, quand utiliser le mastic, c'est ok. Étrange....
Si vous voyez cette erreur dans Hudson, essayez de supprimer le .répertoire java à partir de votre répertoire personnel, il peut fonctionner pour vous.
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 paramètre -x
ou d'ajouter ForwardX11 no
dans votre /etc/ssh/ssh_config
. Dans ce cas, ssh ne créera pas D'affichage de variable d'environnement.
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 Putty Console.
Si vous déclenchez votre code à partir de Jenkins, activer l'option "Démarrer Xvfb avant la construction, et l'arrêter après" pourrait aider. Il m'a aidé.
Changez pour un autre utilisateur et essayez sauf root. il fonctionne pour moi.
Je ne me suis pas déconnecté de root avant de courir ./studio.sh tout est prêt.
Pour Ubuntu 17.10 Installer x tampon de trame virtuelle (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
Dans mon cas, cette erreur n'était pas liée au port D'affichage. J'essayais de charger un XML dans Windchill (un logiciel PLM) et n'ai reçu que l'erreur ci-dessus sur le terminal. Dans un fichier journal, j'ai trouvé le rapport que mon fichier XML était corrompu . Peut-être que quelqu'un a un problème similaire et peut utiliser cette réponse.
Faites D'abord ceci soit dans la phase de construction de Jenkins si vous utilisez ou définissez dans/etc / profile:
unset DISPLAY
export DISPLAY=:0
Ensuite, définissez cette propriété soit dans le code java ou en utilisant maven: - Djava.awt.sans tête = false
Pour moi, le problème était que xorg-x11-xauth n'a pas été installé. Je l'ai installé et puis il a travaillé.
Les paquets que j'ai maintenant sont:
- libX11-commune-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