java.lang.InternalError: Kann keine Verbindung zum X11 window-server für JVisualVM profiling-Sitzung
Ich habe eine Ubuntu server VM (myapp01
) und haben eine Java-Anwendung bereitgestellt die es gibt. Die app wurde wirkenden wackelig und ich möchte auch profile mit JVisualVM. Um dies zu tun brauche ich zum installieren von X-Windows auf meinem Windows 7-host, und dann bekommen Sie die Ubuntu-VM zu exportieren, X11-Verbindung zu meinem host, wenn ich sagen, es JVisualVM laufen auf der VM.
Also begann ich, durch das herunterladen von XMing hier:
http://sourceforge.net/projects/xming/files/Xming/6.9.0.31/Xming-6-9-0-31-setup.exe/download
Ich habe alle Standard - /empfohlene installation von Optionen, einschließlich der Verwendung eines normalen PuTTy Sitzung und erlaubt, öffentliche & private Netzwerk zugreifen. Nach der Installation von XMing, startete ich es und überprüfte es lief auf meinem Windows-host. Ich dann öffnete Cygwin und SSHed in der Ubuntu-server:
$ ssh myuser@myapp01
myuser@myapp01's password:
Welcome to Ubuntu 12.04.4 LTS (GNU/Linux 3.5.0-23-generic x86_64)
* Documentation: https://help.ubuntu.com/
System information as of Tue Jun 10 21:26:15 EDT 2014
System load: 0.0 Processes: 82
Usage of /: 22.5% of 11.81GB Users logged in: 0
Memory usage: 30% IP address for eth0: 10.10.41.108
Swap usage: 0%
Graph this data and manage this system at:
https://landscape.canonical.com/
38 packages can be updated.
30 updates are security updates.
Last login: Tue Jun 10 15:03:35 2014 from 10.10.101.96
Ich dann exportieren Sie die Anzeige, um was erscheint mein host IP:
myuser@myapp01:~$ export DISPLAY=10.10.101.96
Habe ich dann versucht, zu starten, JVisualVM:
myuser@myapp01:~$ cd $JAVA_HOME
myuser@myapp01:/usr/lib/jvm/java-7-oracle-amd64$ ls
bin COPYRIGHT db include jre lib LICENSE man README.html release src.zip THIRDPARTYLICENSEREADME-JAVAFX.txt THIRDPARTYLICENSEREADME.txt
myuser@myapp01:/usr/lib/jvm/java-7-oracle-amd64$ cd bin/
myuser@myapp01:/usr/lib/jvm/java-7-oracle-amd64/bin$ ./jvisualvm
Error: Can't connect to X11 window server using '10.10.101.96' as the value of the DISPLAY variable.
See the /home/myuser/.visualvm/7u14/var/log/messages.log for details.
myuser@myapp01:/usr/lib/jvm/java-7-oracle-amd64/bin$ vim /home/myuser/.visualvm/7u14/var/log/messages.log
Innen /home/myuser/.visualvm/7u14/var/log/messages.log
:
java.lang.InternalError: Can't connect to X11 window server using '10.10.101.96' as the value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:65)
at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:110)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:74)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
at java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:102)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:81)
at org.netbeans.core.startup.Main.start(Main.java:200)
at org.netbeans.core.startup.TopThreadGroup.run(TopThreadGroup.java:84)
at java.lang.Thread.run(Thread.java:745)
Ideen? Ich bin VPNed, könnte das Auswirkungen auf irgendetwas? Habe ich XMing irgendwie falsch konfiguriert? Ist mein export DISPLAY
Befehl falsch?
export DISPLAY
Befehl ist eine Anweisung interpretiert, die durch eine shell, daher ist es ein Stück script. Skript-code. Wenn meine export
ist falsch, und ich glaube, es ist, diese Frage ist über code.Und wenn ein anderer SE-Website ist mehr fit für diese Frage, anstatt downvoting, bitte einfach verschieben!
Sie müssen möglicherweise einige code zu Debuggen, aber das problem ist nicht mit Ihrem code. Es ist Ihr Moor-standard-dontknowhowtorunXoverssh Frage. Es gibt superuser.stackexchange.com, askubuntu.stackexchange.com und unix.stackexchange.com für solche Fragen. Alle haben ihn gefragt und beantwortet, über eine Million mal, aber hier gehen Sie wieder: (1) aktivieren Sie X-forwarding im ssh; (1) nicht Satz-DISPLAY, sollte es bereits für Sie, wenn Sie getan haben (1).
Danke @n.m. (+1) - ich bin verwirrt, obwohl, sagen Sie, dass ich brauchen, um X-forwarding im SSH zuerst, oder unset display first (dein Kommentar oben hat 2 "(1)" Anweisungen)? Vielen Dank für jede Hilfe bei der Klärung der Reihenfolge hier!
Hast du ein JDK installiert auf Ihrem Windows7-box ? Wenn ja, JVisualVM von Windows können Sie ganz einfach überwachen Sie einen remote-host. Wenn nicht, sollten Sie versuchen
ssh -y
... siehe man ssh
(unix-Seite) für mehr detailsInformationsquelleAutor IAmYourFaja | 2014-06-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für Zwecke der Gefahrenabwehr, der X-Server nicht in der Regel akzeptieren, eine direkte TCP-verbindungen von anderen hosts. Sonst könnten die Menschen verbinden Keylogger zu Ihrem X-server, und Ihre Tastatureingaben bestehen würde, die über das Netzwerk unverschlüsselt, so dass die Leute aufzeichnen, Passwörter, nur weil Sie auf dem gleichen LAN.
Aber SSH bietet einen sicheren Weg, um vorwärts X11-Datenverkehr über Ihre SSH-Sitzung über das
-X
oder-Y
Optionen.Auf Ihrem windows-computer verwenden, stellen Sie sicher, dass
$DISPLAY
richtig eingestellt ist, indem Sie versuchen, öffnen Sie einxterm
von der Befehlszeile aus.$DISPLAY
wird wahrscheinlich eingestellt werden, um:0
steht fürlocalhost:0
. Es gibt auch weitere Token zur Authentifizierung von verbindungen zum X-server gespeichert sind, in~/.Xauthority
dass Sie mitxauth list
.Nun
ssh -Y 10.10.101.96
. Wenn Sie eine Nachricht erhalten, wieX11 forwarding request failed on channel 0
, dann laufenssh -v -Y 10.10.101.96
statt um debugging-Meldungen. Wenn der remote-Maschine ist ein server, der Grund wird wohl sein, dassxauth
ist nicht installiert. Auf CentOS, es ist in derxorg-x11-xauth
U /MIN.Auf dem remote-Computer, wenn alles gut ging, dann
$DISPLAY
auf dem remote-Computer wird nun zu einem proxy-display einrichten von SSH:An welcher Stelle Sie können einen Befehl ausführen, wie
xterm
auf dem remote-Computer, und die Fenster pop-up auf Ihrem lokalen display.Obwohl es kein X-server läuft auf dem remote-Computer, können Sie immer noch installieren müssen, um eine Reihe von X11-Bibliotheken für Java, um der Lage sein, sprechen Sie mit Ihrem lokalen X-server...
InformationsquelleAutor andrewdotn
Wenn das JDK ist installiert auf dem Windows-host, gibt es keine Notwendigkeit für die Verwendung der JVisualVM aus dem Unix-host über XWindow und ssh. Es ist eine vollkommen richtige Lösung, aber es kann schwierig sein, wenn Sie sind nicht verwendet, um ssh und x Window DISPLAY, nicht zu sprechen von cygwin oder XMing installieren ...
Die einfachste Lösung in diesem use-case ist :
(siehe docs über jvisualvm und jstatd für weitere Referenzen)
InformationsquelleAutor Serge Ballesta
Ich entschieden habe ein ähnliches problem. In meinem Fall war es eine falsche IP-Adresse angegeben
/etc/hosts
- Datei für ein Host-name-server mit sshd.Glücklicherweise java-Anwendung gab mir diese mehr Informationen in der Ausgabe, während die anderen Anwendungen nur schlägt mit
Failed to open display
Nachricht.InformationsquelleAutor user3132194