Ich versuche, eine Java-Anwendung auf meinem Linux-Computer (Slackware) zu installieren.
Ich habe den folgenden Fehler erhalten und verstehe ihn nicht.
Können Sie mir raten, wie ich das Problem angehen soll? Danke dir.
Folgendes bekomme ich: (Ich sehe, dass eine X11 DISPLAY- Variable festgelegt werden muss, aber welchen Wert soll ich geben und wie?)
~$ java -jar gate-5.0-beta1-build3048-installer.jar
- ERROR -
java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
at java.awt.GraphicsEnvironment.checkHeadless(Graphic sEnvironment.java:159)
at java.awt.Window.<init>(Window.java:407)
at java.awt.Frame.<init>(Frame.java:402)
at net.sourceforge.mlf.metouia.borders.MetouiaDotsBuf fer.<init>(MetouiaDotsBuffer.java:105)
at net.sourceforge.mlf.metouia.borders.MetouiaDots.<i nit>(MetouiaDots.java:66)
at net.sourceforge.mlf.metouia.borders.MetouiaToolBar Border.<init>(MetouiaToolBarBorder.java:49)
at net.sourceforge.mlf.metouia.MetouiaLookAndFeel.ini tComponentDefaults(MetouiaLookAndFeel.java:241)
at javax.swing.plaf.basic.BasicLookAndFeel.getDefault s(BasicLookAndFeel.java:130)
at javax.swing.plaf.metal.MetalLookAndFeel.getDefault s(MetalLookAndFeel.java:1591)
at javax.swing.UIManager.setLookAndFeel(UIManager.jav a:537)
at javax.swing.UIManager.setLookAndFeel(UIManager.jav a:581)
at com.izforge.izpack.installer.GUIInstaller.loadLook AndFeel(GUIInstaller.java:373)
at com.izforge.izpack.installer.GUIInstaller.<init>(G UIInstaller.java:116)
at sun.reflect.NativeConstructorAccessorImpl.newInsta nce0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInsta nce(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newI nstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Construc tor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:30
at com.izforge.izpack.installer.Installer.main(Instal ler.java:62)
Antworten:
Wenn Sie sich auf dem Hauptdisplay befinden, dann
oder wenn Sie csh oder tcsh verwenden
bevor Sie Ihre App ausführen.
Eigentlich bin ich überrascht, dass es nicht automatisch eingestellt wird. Versuchen Sie, diese Anwendung von einem nicht grafischen Terminal aus zu starten? Wenn nicht, haben Sie das Standardprofil, .login, .bashrc oder .cshrc geändert?
Beachten Sie, dass das Setzen von DISPLAY auf: 0.0 voraussetzt, dass Sie wie gesagt am Hauptdisplay sitzen oder dass das Hauptdisplay zumindest mit Ihrer Benutzer-ID angemeldet ist. Wenn es nicht angemeldet ist oder eine andere Benutzer-ID hat, schlägt dies fehl.
Wenn Sie von einem anderen Computer kommen und sich auf der Hauptanzeige dieses Computers befinden und dort X ausgeführt wird, können Sie mit "ssh -X Hostname" eine Verbindung zu diesem Host herstellen, und ssh leitet die X-Anzeige zurück . ssh stellt außerdem sicher, dass die Umgebungsvariable DISPLAY korrekt eingestellt ist (vorausgesetzt, sie wird in den verschiedenen oben genannten Punktdateien nicht durcheinander gebracht). In einer "ssh -X" -Sitzung hat die Umgebungsvariable DISPLAY einen Wert wie "localhost: 11.0", der auf den Socket verweist, den ssh zu Ihrer lokalen Box tunnelt.
quelle
Führen Sie dies in einer X11-Umgebung aus? Sie können ein Terminalfenster verwenden, das sich jedoch innerhalb von X befinden muss (entweder nach einer grafischen Anmeldung oder durch Ausführen von startx).
Wenn Sie sich bereits in einer grafischen Umgebung befinden, versuchen Sie, DISPLAY =: 0 für bash-ähnliche Shells (bash, sh usw.) oder setenv DISPLAY: 0 für C-Shell-basierte Shells (csh, tcsh usw.) zu exportieren.
Wenn Sie über SSH eine Verbindung von einem anderen Computer aus hergestellt haben, verwenden Sie die Option -X, um die grafische Oberfläche auf dem Computer anzuzeigen, auf dem Sie sitzen (vorausgesetzt, dort wird ein X-Server ausgeführt (z. B. xming für Windows und Ihr Standard-Linux X) Server).
quelle
export DISPLAY=:0
Sie müssen die X11-Weiterleitung in Ihrem PuTTy aktivieren
Öffnen Sie dazu PuTTy, gehen Sie zu Verbindung => SSH => Tunnel und aktivieren Sie das Kontrollkästchen X11-Weiterleitung aktivieren
Auch sudo to server und exportiere die folgende Variable hier IP ist die IP deines lokalen Rechners
quelle
Eine weitere Sache, die in einem ähnlichen Fall wie beschrieben das Problem sein könnte: X wird nicht weitergeleitet und $ DISPLAY wird nicht gesetzt, wenn das Programm 'xauth' nicht auf der Remote-Seite installiert ist. Sie können sehen, dass es danach sucht, wenn Sie "ssh -Xv ip_address" ausführen und, falls es nicht gefunden wird, fehlschlägt. Dies wird nur angezeigt, wenn Sie den ausführlichen Modus aktivieren (eine fehlgeschlagene IMO). Normalerweise finden Sie 'xauth' in einem Paket mit demselben Namen.
quelle
Sehr einfach, hatte das gleiche Problem, dann habe ich eine App heruntergeladen und installiert, die bei der Anzeige helfen würde, und dann den Fehler behoben.
Laden Sie diese App herunter xming:
http://sourceforge.net/project/downloading.php ?
Installieren Sie und verwenden Sie die Einstellungen unter diesem Link:
http://www.geo.mtu.edu/geoschem/docs/putty_install.html oder folgen Sie diesen Schritten:
Installieren / Konfigurieren von PuTTy und Xming
Nachdem PuTTy und Xming auf den PC heruntergeladen wurden, installieren Sie sie gemäß den entsprechenden Anweisungen.
Xming konfigurieren
Führen Sie nach der Installation von Xming die Anwendung "XLaunch" aus und überprüfen Sie, ob die Einstellungen wie folgt sind:
PuTTy konfigurieren
Doppelklicken Sie nach der Installation von PuTTy auf das PuTTy-Symbol auf dem Desktop und konfigurieren Sie es wie folgt:
Dies zeigt, wie Sie ein Anmeldeprofil erstellen und dann speichern.
Speichern Sie das Profil und stellen Sie dann eine Remoteverbindung zum Server her, um es zu testen.
Prost!!!
quelle
Es gibt viele Möglichkeiten, dies zu tun. Ich habe unten etwas Bequemes für mich getan und funktioniert immer gut.
Auf dem Server wird eine .Xauthority-Datei generiert, und Sie müssen beachten, dass die Variable DISPLAY bereits festgelegt ist.
$ xauth Liste
$ xauth hinzufügen
Geben Sie zum Testen xclock oder xeyes ein
Hinweis : Um den Benutzer zu wechseln, kopieren Sie die .Xauthority-Datei in das Ausgangsverzeichnis des jeweiligen Benutzers und exportieren Sie auch die DISPLAY-Variable von diesem Benutzer.
quelle
Ich hatte das gleiche Problem in Ubuntu 14.04.01, als ich versuchte, JDK 8 und Netbeans zu installieren, wenn ich das Skript in einem Byobu-Terminal starte (möglicherweise passiert bei Screens dasselbe).
Beenden Sie einfach Byobu und führen Sie das Skript (in einem grafischen Terminal) aus.
quelle
Erstprüfung.
1) Wenn Sie das DISPLAY auf einen anderen Computer exportieren, stellen Sie sicher, dass Sie den Befehl
xhost +
auf diesem Computer eingegeben haben . Mit diesem Befehl kann ein anderer Computer sein DISPLAY auf diesem Computer exportieren. Es kann Sicherheitsbeschränkungen geben, wissen Sie es einfach. Notwendigkeit zu überprüfenssh -X MachineIP
wird nicht erforderlichxhost +
?2) Manchmal
JCONSOLE
Manchmal wird nicht der gesamte Prozess angezeigt, da diese JVM-Prozesse möglicherweise mit einem anderen Benutzer ausgeführt werden und Sie das DISPLAY mit einem anderen Benutzer exportieren. also besser folgenCD_DIR>sudo ./jconsole
3) In WAS (WEBSPHERE); jconsole kann seinen Java-Server-Prozess nicht verbinden. In diesem Fall müssen Sie nur die Verbindung herstellen und dann versuchen, eine Verbindung herzustellen. Das hat bei mir funktioniert. Möglicherweise werden auf dieser Seite einige Variablen initialisiert, damit sich jconsole mit diesem Server verbinden kann.
WAS-Konsole> Anwendungsserver> Server1> Prozessdefinition> Java Virtual Machine
Ich habe das gleiche Problem mit der AIX-Maschine (wo nur die Befehlszeilenschnittstelle verfügbar ist, gibt es keine DISPLAY-Benutzeroberfläche) festgestellt. Ich habe durch die Installation gelöst
Schritt 1: Über diesen Windows-Computer habe ich eine Verbindung mit der Unix-Box hergestellt, auf der die GUI-Konsole verfügbar ist.
Schritt 2: SSH zur AIX-Box von dieser UNIX-Box.
Schritt 3: Setzen Sie DISPLAY wie "export DISPLAY = UNIXMACHINE: NXClientPORTConnectedMentionedOnTitle".
Schritt 4: Wenn wir nun Programme starten, für die DISPLAY erforderlich ist; Es wird auf dieser UNIX-Box gestartet.
Wenn Sie VNC auf einer UNIX-Box installiert haben, auf der eine Anzeige verfügbar ist; dann ist Windows und NX Client nicht erforderlich. Schritt 1: Verwenden Sie VNC, um eine Verbindung mit der Unix-Box herzustellen, in der die GUI-Konsole verfügbar ist.
Schritt 2: SSH zur AIX-Box von dieser UNIX-Box.
Schritt 3: Setzen Sie DISPLAY wie "export DISPLAY = UNIXMACHINE: VNCPORT".
Schritt 4: Wenn wir nun Programme starten, für die DISPLAY erforderlich ist; Es wird auf dieser UNIX-Box gestartet.
SONST
Schritt 1: SSH zur AIX-Box von dieser UNIX-Box.
Schritt 2: Setzen Sie DISPLAY wie "export DISPLAY = UNIXMACHINE: VNCPORT".
Schritt 3: Wenn wir nun Programme starten, für die DISPLAY erforderlich ist; Es wird auf dieser UNIX-Box gestartet.
quelle
Für diejenigen, die versuchen, eine X Window-Anwendung unter Linux unter Windows zum Laufen zu bringen:
Was für mich funktioniert hat, war, den xming-Server auf meinem Windows-Computer einzurichten, die X11-Weiterleitungsoption in putty zu setzen, wenn ich eine Verbindung zum Linux-Host herstelle, und meine Windows-IP-Adresse mit dem Anzeigeport und dann die Anzeigevariable mit meiner Windows-IP-Adresse einzugeben: 0.0
Vergessen Sie nicht, die IP-Adresse des Linux-Hosts zur Datei X0.hosts hinzuzufügen, um sicherzustellen, dass der xming-Server Datenverkehr von diesem Host akzeptiert. Ich habe eine Weile gebraucht, um das herauszufinden.
quelle
Vergessen Sie nicht, "host +" auf Ihrem "Heim" -Anzeigemaschinen auszuführen, und wenn Sie ssh zum Computer ausführen, führen Sie "ssh -x Hostname" aus.
quelle