2009-03-19 16 views
71

Sto provando ad installare un programma (un'applicazione Java) sulla mia macchina Linux (sto usando Slackware). Ho ricevuto il seguente errore e non lo capisco. Potresti consigliarmi come affrontare il problema? Non sono sicuro che si tratti di una domanda che potrei porre qui, perché non è esattamente una domanda di programmazione, ma sarei grato se rispondessi. Grazie."Nessuna variabile X11 DISPLAY" - cosa significa?

Ecco cosa ottengo: (? Vedo che qualche variabile X11 DISPLAY deve essere impostata, ma che valore dovrei dare e come)

~$ 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) 
+0

sto avendo lo stesso problema, funziona perfettamente su console ma quando uso eclipse getta la stessa eccezione ho anche messo quelle linee di codice: processo proc_exporting = Runtime.getRuntime(). Exec ("sudo export DISPLAY =: 0.0"); continua a non funzionare –

+1

Nessuna delle risposte fornisce le informazioni necessarie per risolvere questo problema durante la connessione a una console da remoto tramite puTTY. Qualsiasi risposta che indirizzi SSH in realtà non spiega come farlo funzionare. Qualcuno sa di una domanda che affronta questo? –

risposta

88

Se siete sul display principale, poi

export DISPLAY=:0.0 

o se si sta utilizzando csh o tcsh

setenv DISPLAY :0.0 

prima di eseguire la vostra applicazione.

In realtà, sono sorpreso che non sia impostato automaticamente. Stai cercando di avviare questa applicazione da un terminale non grafico? In caso contrario, hai modificato il file .profile, .login, .bashrc o .cshrc predefinito?

Si noti che impostando DISPLAY su: 0.0 si supponga di stare seduti sul display principale, come ho detto, o almeno che il display principale sia collegato al proprio id utente. Se non è connesso, o è un ID utente diverso, fallirà.

Se si proviene da un altro computer e si è al display principale di quella macchina ed è in esecuzione X, è possibile utilizzare "ssh -X hostname" per connettersi a tale host e ssh inoltrerà la X torna indietro. ssh si assicurerà inoltre che la variabile d'ambiente DISPLAY sia impostata correttamente (a patto che non venga modificata nei vari file di punti sopra menzionati). In una sessione "ssh -X", la variabile d'ambiente DISPLAY avrà un valore come "localhost: 11.0", che punterà al socket che ssh sta facendo il tunneling alla tua casella locale.

+0

Ciao, grazie mille, il primo ha funzionato per me. Sì, lo avvio da un terminale non grafico. – user42155

+0

Sembra che voglia accedere al display grafico. Fare attenzione a non eseguirlo quando il display grafico non è disponibile o appartiene ad un altro ID utente. –

+3

nota che questo ha funzionato perché sei/eri sulla console. se tu fossi su un altro terminale, dovresti avere un server X in esecuzione sul terminale e quindi impostare l'ambiente in modo che punti alla tua macchina (esporta DISPLAY = 'nome host del terminale pauls': 0.0 per esempio) – KevinDTimm

9

Si sta eseguendo questo all'interno di un ambiente X11? È possibile utilizzare una finestra di terminale, ma deve essere all'interno di X (dopo un accesso grafico o eseguendo startx).

Se sei già all'interno di un ambiente grafico, provare export DISPLAY =: 0 per bash come shell (bash, sh, ecc) o setenv DISPLAY: 0 per le shell C shell all'occupazione (csh, tcsh, ecc)

Se si è connessi da un'altra macchina tramite SSH, si utilizza l'opzione -X per visualizzare l'interfaccia grafica sulla macchina su cui si è seduti (a condizione che ci sia un X server in esecuzione lì (come xming per Windows e lo standard Linux X server).

+0

Ciao, sto facendo partire startx. – user42155

+0

Oh, giusto, Slackware. È ancora così semplice come lo era quando l'ho usato per l'ultima volta 10 anni fa? –

+0

Si avvia automaticamente per impostazione predefinita nel runlevel 3. Ovviamente, se gli dici di avviare in runlevel 5, otterrai un bel menu di accesso KDM assumendo che tu abbia installato KDE. –

-3

non dimenticare di eseguire "host +" sulla vostra macchina di visualizzazione "casa", e quando si SSH alla macchina che si sta facendo "ssh hostname -x"

-Tee

+14

Raccomanderei vivamente di non usare "xhost +" poiché se disabilita effettivamente tutta la sicurezza sul tuo server X. ssh è abbastanza intelligente da usare xauth per configurare automaticamente l'autenticazione X11, quindi non ci dovrebbe essere bisogno di usare xhost. –

+0

Questo dovrebbe essere un commento, non un post. Solo perché non puoi commentare non significa che dovresti fare un brutto post. –

0

Ho avuto lo stesso problema in Ubuntu 14.04.01 quando ho provato ad installare JDK 8 e Netbeans se lancio lo script all'interno di un terminale Byobu (forse con Schermi succede lo stesso).

Basta uscire da Byobu e (in un terminale grafico) eseguire la sceneggiatura.

0

Controllo iniziale.

1) Quando si esporta il DISPLAY su un'altra macchina, assicurarsi di aver immesso il comando xhost + su quella macchina. Questo comando consente ad altre macchine di esportare il loro DISPLAY su questa macchina. Ci possono essere vincoli di sicurezza, basta saperlo. Hai bisogno di controllare ssh -X MachineIP non richiederà xhost +?

2) Alcune volte JCONSOLE non mostrerà tutto il suo processo, poiché tali processi JVM possono essere eseguiti con utenti diversi e si sta esportando il DISPLAY con un altro utente. quindi meglio seguire CD_DIR>sudo ./jconsole

3) In WAS (WEBSPHERE); jconsole non sarà in grado di connettere il suo processo java server, quella volta basta andare fino al collegamento, quindi provare a collegarlo. Questo ha funzionato per me. Può essere che questa pagina stia inizializzando alcune variabili per consentire a jconsole di connettersi con quel server.

WAS console> Server delle applicazioni> server1> definizione processo> Java Virtual Machine


ho affrontato lo stesso problema con AIX (dove interfaccia a riga di comando solo a disposizione, non c'è alcuna visualizzazione UI) della macchina. Ho risolto installando

NX Client per Windows

Fase 1: Attraverso quella macchina di Windows, ho collegato con box unix dove console GUI è disponibile.
Passaggio 2: SSH alla casella AIX da quella casella UNIX.
Passaggio 3: imposta DISPLAY come "export DISPLAY = UNIXMACHINE: NXClientPORTConnectedMentionedOnTitle"
Passaggio 4: Ora se lanciamo programmi che richiedono DISPLAY; sarà lanciato su questa scatola UNIX.

VNC

Se è stato installato VNC sulla scatola di UNIX in cui display è disponibile; quindi il client Windows e NX non è richiesto. Passaggio 1: utilizzare VNC per connettersi con la scatola Unix in cui è disponibile la console GUI.
Passaggio 2: SSH alla casella AIX da quella casella UNIX.
Passaggio 3: imposta DISPLAY come "Esporta DISPLAY = UNIXMACHINE: VNCPORT"
Passaggio 4: Ora se lanciamo programmi che richiedono DISPLAY; sarà lanciato su questa scatola UNIX.

ELSE

Fase 1: SSH alla scatola di AIX da quella scatola di UNIX.
Passaggio 2: imposta DISPLAY come "Esporta DISPLAY = UNIXMACHINE: VNCPORT"
Passaggio 3: Ora se lanciamo programmi che richiedono DISPLAY; sarà lanciato su questa scatola UNIX.

4

Un'altra cosa che potrebbe essere il problema in un caso simile a quello descritto - X non viene inoltrato e $ DISPLAY non è impostato quando il programma 'xauth' non è installato sul lato remoto. È possibile vederlo cercarlo quando si esegue "ssh -Xv ip_address" e, se non trovato, fallisce, cosa che non si vede a meno che non si attivi la modalità dettagliata (un errore IMO). Di solito puoi trovare 'xauth' in un pacchetto con lo stesso nome.

1

Molto facile, lo stesso problema che ho fatto è stato quello di scaricare e installare un'app che avrebbe aiutato a visualizzare e quindi corretto l'errore.

Scarica questa applicazione Xming:

http://sourceforge.net/project/downloading.php?

installare, quindi utilizzare le impostazioni su questo link:

http://www.geo.mtu.edu/geoschem/docs/putty_install.html o seguire questa procedura:

Installazione/Configurazione stucco e Xming

volta stucco e Xming sono stati scaricati sul PC, installare secondo le rispettive istruzioni.

Configurazione Xming

Una volta installato Xming, eseguire l'applicazione chiamata 'XLaunch' e verificare che le impostazioni sono come mostrato:

  • selezionare le voci predefinite sulle impostazioni di visualizzazione di Windows scegliere Avanti
  • fare clic su Avanti nella finestra Tipo sessione.
  • fare clic su Avanti nella finestra Parametri aggiuntivi (la casella di controllo Appunti avviso è vera)
  • salvare la configurazione e fare clic per terminare.

Configurazione PuTTy

Dopo l'installazione Mastice, fare doppio clic sull'icona PuTTy sul desktop e configurare come indicato:

Questo dimostra la creazione di un profilo di login quindi salvarlo.

  • Su ssh -> X11, fare clic sulla casella di controllo per abilitare l'inoltro X11.
  • in mostra X posizione casella di testo, digitare localhost: 0,0

Salva profilo poi connettersi in remoto al server per verificare.

Saluti !!!

+0

Si prega di includere le informazioni essenziali dai collegamenti nella risposta stessa, perché potrebbero finire in modo definitivo, rendendo la risposta inutile. – plamut

4

è necessario abilitare X11 forwarding in voi PuTTy

di farlo aprire Mastice, andare a connessione => SSH => Tunnel e segno di spunta il Enable X11 forwarding

anche sudo al server ed esportare la variabile qui sotto IP IP è il tuo IP locale

export DISPLAY=10.75.75.75:0.0 

enter image description here

0

Per coloro che stanno cercando di ottenere un'applicazione X Window di lavoro da Windows da Linux:

Quello che ha funzionato per me è stato quello di configurazione Xming server sulla mia macchina Windows, impostare l'opzione di inoltro X11 in stucco quando mi collego a l'host linux e inserisci il mio indirizzo IP di windows con la porta di visualizzazione e quindi la variabile di visualizzazione con il mio indirizzo IP di windows: 0.0

Non dimenticare di aggiungere l'indirizzo IP degli host linux al file X0.hosts per assicurarti che il file xming il server accetta il traffico da quell'host. Mi ci è voluto un po 'per capirlo.