Ich habe ein Skript, das Java verwendet, um eine Verbindung herzustellen, um X11 im 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:
export DISPLAY=:10.0
export DISPLAY=localhost:10.0
Ich habe auch den Port 0.0 ausprobiert, bekomme aber immer den gleichen Fehler
nach dem Versuch von 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 versuchte ich startx
es sagt, dass er an diesem Port läuft
mein System ist Ubuntu Server Edition 10.04
Dieser Befehl hat mir geholfen, das Problem zu lösen:
export DISPLAY=:0
Sie müssen den Parameter -Djava.awt.headless=true
beim Start angeben.
Entfernen Sie die DISPLAY-Variable
unset DISPLAY
Dies hilft in den meisten Fällen (z. B. Starten von Anwendungsservern oder anderen Java-basierten Tools) und vermeidet das Ändern all dieser vielen Befehlszeilen.
Es kann auch bequem sein, es für einen dedizierten App-Server/Tools-Benutzer zum .bash_profile hinzuzufügen.
Ich denke, Sie arbeiten im Sudo-Modus. Bitte gehen Sie in den Benutzermodus und versuchen Sie es erneut
Falls jemand versucht, die automatisierten Komponententests über das maven-surefire-plugin unter CI (jenkins, ..) auszuführen, und der oben genannte Fehler angezeigt wird, müssen Sie Ihre surefire-Plugin-Konfiguration aktualisieren:
<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>
Dies wird es beheben:
/usr/bin/Java -Djava.awt.headless=true $Your_program
Zuerst: Starten Sie XQuartz
Zweitens: ssh -X user @ ip_address
...: Starten Sie Ihren Prozess
wenn Sie ssh starten und dann XQuartz starten, wird diese Fehlermeldung angezeigt
Für mich hat das Einloggen als -Y statt -X funktioniert.
Falls Sie nicht vertrauenswürdiges X11 haben (siehe unten), versuchen Sie stattdessen das Flag -Y (wenn Sie dem Host vertrauen):
Warnung : Nicht vertrauenswürdiges X11-Weiterleitungs-Setup ist fehlgeschlagen: Es werden keine Xauth-Schlüsseldaten generiert
Nach mehreren Tagen vergeblicher Anstrengung, Glassfish auf Raspberry Pi 2 mit kopfloser Fedora 22 zu installieren, arbeitete Below für mich ohne Probleme
unset DISPLAY
Java -Djava.awt.headless=true -jar glassfissh-installer-v2ur2-b04-linux.jar
bekam meine Hilfe von hier
In meinem Fall war kein Platz mehr in meinem Computer und ich hatte das gleiche Problem ... Einige Male war es das Platzproblem. Überprüfen Sie den Speicherplatz in Ihrer Linux/Unix-Umgebung und stellen Sie sicher, dass auf Ihrem Computer genügend Speicherplatz vorhanden ist.
Michael-O gab nützliche Ansätze zur Lösung des Problems. Eine andere Möglichkeit, dieses Problem zu lösen, besteht darin, den Server mit PuTTY Console zu starten.
Gelöst Ich melde mich einfach bei xorg ab!
Ich verwendete Xming und bekam einen ähnlichen Fehler. 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.
Führen Sie dies entweder in der Build-Phase von Jenkins durch, wenn Sie dies verwenden oder in/etc/profile festlegen:
unset DISPLAY
export DISPLAY=:0
legen Sie diese Eigenschaft dann entweder in Java-Code oder mit maven fest: - Djava.awt.headless = false
Ich habe mich einfach nicht von root abgemeldet, bevor.
die einzige Möglichkeit, wie ich es schaffen konnte, bestand darin, das Skript mit einer Vorlage auszuführen. z.B. 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
Wenn Sie diesen Fehler in Hudson sehen, versuchen Sie, das Verzeichnis .Java aus Ihrem Home-Verzeichnis zu entfernen. Möglicherweise funktioniert es für Sie.
wechseln Sie zu einem anderen Benutzer und versuchen Sie es mit Ausnahme von root. Für mich geht das.
Wenn Sie Ihren Code von Jenkins auslösen, kann es hilfreich sein, die Option "Xvfb vor dem Build starten und danach herunterfahren" zu aktivieren. Es hat mir geholfen.
Für Ubuntu 17.10 Installieren Sie den virtuellen X-Frame-Puffer (xvfb).
apt install xvfb
Und fügte diese Zeilen der Datei/etc/profile hinzu ...
# 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
Wenn ich den jconsole-Befehl an der Fernbedienung ausführe, stoße ich auf den gleichen Fehler. Ich möchte einen Parameter bei jconsole ändern, der auf einem Remote-Linux-Host ausgeführt wird. Ich kann mich beim Host mit SecureCRT anmelden. Das Terminal wirft diese Fehlerinformationen aus. Glücklicherweise, wenn Sie den PuTTY verwenden, ist es in Ordnung. Seltsam....
In meinem Fall betraf dieser Fehler nicht den DISPLAY-Port. Ich habe versucht, eine 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.
Wenn Sie die Anwendung auf einem Remote-Server starten, während Sie von ssh angemeldet sind, können Sie ssh mit dem Parameter -x
starten oder ForwardX11 no
in Ihrem /etc/ssh/ssh_config
hinzufügen. In diesem Fall erstellt ssh keine Umgebungsvariable DISPLAY.