web-dev-qa-db-fra.com

Java Impossible de 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 me connecter afin d'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 n'est pas en cours d'exécution alors j'ai essayé startx sa dit son en cours d'exécution sur ce port 

mon système est Ubuntu Server Edition 10.04

69
ElTero

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

export DISPLAY=:0
32
Maryam Saeidi

Vous devez spécifier le paramètre -Djava.awt.headless=true au moment du démarrage.

48
Michael-O

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 Java) et évite de modifier autant de lignes de commande.

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

32
bebbo

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

12
Harsh V Pillai

Au cas où quelqu'un essaierait d'exécuter les tests unitaires automatisés via le plugin maven-surefire sur CI (jenkins, ..) et obtenant l'erreur susmentionnée, veillez à mettre à jour la configuration de votre 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>
8
Puneetsri

Cela résoudra le problème:

/usr/bin/Java -Djava.awt.headless=true $Your_program
6
grepit

D'abord: lancez XQuartz

Deuxièmement: ssh -X utilisateur @ ip_address

...: démarrez votre processus

si vous SSH et puis démarrez XQuartz, vous obtiendrez cette erreur

3
Aleks Tkachenko

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

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

Avertissement : Echec de la configuration du transfert X11 non sécurisé: données de clé xauth non générées

3
loknath

Après plusieurs jours de vains efforts pour installer Glassfish sur Raspberry Pi 2 avec Fedora 22 sans tête, Below fonctionnait pour moi sans problème.

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

a obtenu mon aide de ici

3
N_E

Dans mon cas, il n’y avait plus d’espace libre dans ma machine et j’étais confronté au même problème… quelques fois, c’était peut-être l’espace. Vérifiez l'espace disponible dans votre environnement Linux/Unix et assurez-vous que votre ordinateur dispose de suffisamment d'espace.

1
user3016200

Michael-O a donné une approche utile pour résoudre le problème. Une autre solution consiste à démarrer le serveur avec PuTTY Console.

1
Koti Reddy

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

1
Nilesh

J'utilisais Xming et j'ai eu une erreur similaire. Les mesures 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, exécutez la commande suivante: DISPLAY=XXX.XXX.XXX.XX:0.0; export DISPLAY

Remplacez XXX.XXX.XXX.XX par votre adresse IP.

1
Shashank

Commencez par faire ceci soit dans la phase de construction de Jenkins si vous utilisez ou défini 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

1

Je ne me suis pas déconnecté de la racine avant d’exécuter ./studio.sh.

0

le seul moyen de le faire fonctionner était d'exécuter le script avec un modèle. par exemple. Modèle Sudo ./glassfish-3.1.2.2-unix.sh -s

Cela installe Glassfish en mode silencieux. http://docs.Oracle.com/cd/E18930_01/html/821-2427/ghmva.html

0
janex

Si vous voyez cette erreur dans Hudson, essayez de supprimer le répertoire .Java de votre répertoire personnel, cela fonctionnera peut-être pour vous. 

0
user2945593

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

0
Vinod Ranga

Si vous déclenchez votre code à partir de Jenkins, l'activation de l'option "Démarrer Xvfb avant la construction et l'éteindre après" peut vous aider. Ça m'a aidé.

0
Akshay Maldhure

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
0
cwilliamsz

Je rencontre la même erreur avec vous lorsque j’exécute la commande jconsole à distance. Je veux modifier un paramètre sur jconsole qui s'exécute sur un hôte Linux distant, je peux me connecter à l'hôte, utiliser le secureCRT, le terminal renvoie ces informations d'erreur Heureusement, lorsque vous utilisez le Mastic, c'est bon. Bizarre....

0
David

Dans mon cas, cette erreur n'était pas liée au port DISPLAY. J'essayais de charger un fichier 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 que mon fichier XML était corrompu . Peut-être que quelqu'un a un problème similaire et peut utiliser cette réponse.

0
LMN

Si vous démarrez une application sur un serveur distant alors que vous êtes connecté par ssh, vous pouvez également démarrer ssh avec le paramètre -x ou ajouter ForwardX11 no dans votre /etc/ssh/ssh_config. Dans ce cas, ssh ne créera pas la variable d'environnement DISPLAY.

0
user3132194