Ich habe ein Skript, das Java verwendet, um eine Verbindung herzustellen und X11 in Port 10.0 bei localhost anzuzeigen
aber ich bekomme immer diesen fehler
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)
Ich habe alles versucht, um dieses Problem zu lösen, wie:
export DISPLAY=:10.0
export DISPLAY=localhost:10.0
Ich habe auch den Port 0.0 ausprobiert, aber ich bekomme immer den gleichen Fehler
nach dem Versuch xhost
xhost +local:all
xhost: unable to open display ""
xhost: unable to open display ":10.0"
Wie kann ich das beheben? Ich dachte, dass der X-Server nicht läuft, also habe ich versucht startx
, zu sagen, dass er an diesem Port läuft
Mein System ist Ubuntu Server Edition 10.04
unset DISPLAY
half mir (mitexport DISPLAY=:0
bekam ich den FehlerCan't connect to X11 window server using ':0'
Sie müssen den
-Djava.awt.headless=true
Parameter beim Start angeben .quelle
ij.io.Opener.openJpegOrGif
, wir können davon ausgehen, dass dies wahrscheinlich eine grafische Benutzeroberfläche erfordert. Headless würde also zu einem weiteren Fehler führen :java.awt.HeadlessException
.Entfernen Sie die Variable DISPLAY
Dies hilft in den meisten Fällen (z. B. beim Starten von Anwendungsservern oder anderen Java-basierten Tools) und vermeidet das Ändern all der vielen Befehlszeilen.
Es kann auch bequem sein, es dem .bash_profile für einen dedizierten App-Server / Tools-Benutzer hinzuzufügen.
quelle
Ich denke, Sie arbeiten im Sudo-Modus. Bitte checken Sie in den Benutzermodus aus und versuchen Sie es erneut
quelle
Falls jemand versucht, die automatisierten Komponententests über das Maven-Surefire-Plugin auf CI (Jenkins, ..) auszuführen und den oben genannten Fehler erhält, muss die Konfiguration des todsicheren Plugins aktualisiert werden:
quelle
Dies wird es beheben:
quelle
Für mich hat die Anmeldung als -Y statt -X funktioniert.
Wenn Sie X11 nicht vertrauenswürdig haben, wie unten gezeigt, versuchen Sie stattdessen das Flag -Y (wenn Sie dem Host vertrauen):
Warnung : Nicht vertrauenswürdiges X11-Weiterleitungssetup fehlgeschlagen: Xauth-Schlüsseldaten wurden nicht generiert
quelle
Nach mehreren Tagen vergeblicher Anstrengung, Glasfisch auf Himbeer-Pi 2 mit kopflosem Fedora 22 zu installieren, funktionierte Below für mich ohne Probleme
habe meine Hilfe von hier bekommen
quelle
Zuerst: Starten Sie XQuartz
Zweitens: ssh -X user @ ip_address
...: Starten Sie Ihren Prozess
Wenn Sie ssh und dann XQuartz starten, wird dieser Fehler angezeigt
quelle
Tun Sie dies zuerst entweder in der Erstellungsphase von Jenkins, wenn Sie / etc / profile verwenden oder festlegen:
Setzen Sie diese Eigenschaft dann entweder im Java-Code oder mit maven: -Djava.awt.headless = false
quelle
Dies hat mein Problem behoben
Beachten Sie jedoch, dass
xhost +
die Authentifizierung vollständig deaktiviert wird und jeder auf alle Anwendungen auf Ihrem Bildschirm zugreifen kann.xhost +si:localuser:root
scheint bei ordnungsgemäßer Authentifizierung ähnlich zu funktionieren.quelle
Ich habe Xming verwendet und einen ähnlichen Fehler erhalten. Folgende Schritte wurden unternommen, um das Problem zu beheben:
DISPLAY=XXX.XXX.XXX.XX:0.0; export DISPLAY
Ersetzen Sie
XXX.XXX.XXX.XX
durch Ihre IP-Adresse.quelle
Gelöst. Ich melde mich einfach ab und logge mich mit xorg ein!
quelle
Michael-O gab einen nützlichen Ansatz zur Lösung des Problems. Eine andere Möglichkeit, dies zu lösen, besteht darin, den Server mit Putty Console zu starten.
quelle
In meinem Fall war kein Platz mehr in meiner Maschine und ich hatte das gleiche Problem. Manchmal könnte es das Platzproblem sein. Überprüfen Sie den Speicherplatz in Ihrer Linux / Unix-Umgebung und stellen Sie sicher, dass auf Ihrem Computer genügend Speicherplatz vorhanden ist.
quelle
Überprüfen Sie mit dem folgenden Befehl, ob die Variable $ DISPLAY gesetzt ist oder nicht:
echo $ DISPLAY
Wenn die Anzeigevariable nicht festgelegt ist, führen Sie den folgenden Befehl zum Festlegen aus (auch wenn sie festgelegt ist, können Sie für Ihre Sitzung einen untergeordneten Befehl verwenden).
export DISPLAY =: 0.0
im Kitt haben Sie auch die x-Anzeigeposition als: 0.0
quelle
Die einzige Möglichkeit, es zum Laufen zu bringen, bestand darin, das Skript mit einer Vorlage auszuführen. zB sudo ./glassfish-3.1.2.2-unix.sh -s Vorlage
Dadurch wird Glassfish im Silent-Modus installiert. http://docs.oracle.com/cd/E18930_01/html/821-2427/ghmva.html
quelle
Ich habe den gleichen Fehler bei Ihnen, wenn ich den Befehl jconsole auf remote ausführe. Ich möchte einen Parameter an jconsole ändern, der auf einem Remote-Linux-Host ausgeführt wird. Ich kann den Host mithilfe der SecureCRT anmelden. Das Terminal gibt diese Fehlerinformationen aus. Glücklicherweise ist es in Ordnung, wenn Sie den Kitt verwenden. Seltsam....
quelle
Wenn dieser Fehler in Hudson angezeigt wird, versuchen Sie, das Java-Verzeichnis aus Ihrem Home-Verzeichnis zu entfernen. Möglicherweise funktioniert es für Sie.
quelle
Wenn Sie die Anwendung auf einem Remote-Server starten, während Sie von ssh angemeldet sind, können Sie ssh auch mit einem
-x
Parameter starten oderForwardX11 no
in Ihrem hinzufügen/etc/ssh/ssh_config
. In diesem Fall erstellt ssh keine Umgebungsvariable DISPLAY.quelle
Wenn Sie Ihren Code von Jenkins aus auslösen, kann es hilfreich sein, die Option "Xvfb vor dem Build starten und danach herunterfahren" zu aktivieren. Es hat mir geholfen.
quelle
Wechseln Sie zu einem anderen Benutzer und versuchen Sie es mit Ausnahme von root. Für mich geht das.
quelle
Ich habe mich vor dem Ausführen von ./studio.sh einfach nicht von root abgemeldet.
quelle
Installieren Sie für Ubuntu 17.10 X Virtual Frame Buffer (xvfb)
Und diese Zeilen zur Datei / etc / profile hinzugefügt ...
quelle
In meinem Fall hing dieser Fehler nicht mit dem DISPLAY-Port zusammen. Ich habe versucht, ein XML in Windchill (eine PLM-Software) zu laden und habe nur den obigen Fehler auf dem Terminal erhalten. In einer Protokolldatei fand ich den Bericht, dass meine XML-Datei beschädigt war . Vielleicht hat jemand ein ähnliches Problem und kann diese Antwort verwenden.
quelle
Mein Problem war mit der Firewall. Vorübergehend deaktiviert.
[BEARBEITEN] Und der Server-Hostname zeigte auf eine andere IP. Stellen Sie es einfach auf localsererver ein.
strace xclock
half beim Debuggen dieses Problems.quelle
Ich habe dieses Problem behoben, indem ich mich mit Xorg angemeldet habe. Standardmäßig habe ich Wayland verwendet. Es sieht so aus, als ob Wayland die meisten Designfehler des Xorg beseitigt, der seine eigenen Probleme hat.
quelle
Wenn Sie versuchen, die Anzeige mit su zu exportieren, funktioniert dies immer noch nicht. Das hat bei mir funktioniert. Versuchen Sie die X11-Weiterleitung für Sudo-Benutzer.
Verbinden Sie den Remote-Host mit der Option -X mit ssh.
Listen Sie nun das Coockie-Set für den aktuellen Benutzer auf.
Wechseln Sie mit sudo zu einem anderen Benutzerkonto. Fügen Sie dem sudo-Benutzer das Cookie aus der obigen Befehlsausgabe hinzu.
Exportieren Sie die Anzeige aus Schritt 2 erneut für den Sudo-Benutzer. Versuchen Sie den Befehl xclock, um zu überprüfen, ob die x Clientanwendungen wie erwartet funktionieren.
Quelle: https://www.thegeekdiary.com/how-to-set-x11-forwarding-export-remote-display-for-users-who-switch-accounts-using-sudo/
quelle
Für mich war das Problem, dass xorg-x11-xauth nicht installiert war. Ich habe es installiert und dann hat es funktioniert.
Die Pakete, die ich jetzt habe, sind:
quelle