"X11 DISPLAY değişkeni yok" - bu ne anlama geliyor?


103

Linux makineme (Slackware) bir Java uygulaması kurmaya çalışıyorum.

Aşağıdaki hatayı aldım ve anlamadım.

Soruna nasıl yaklaşacağımı bana tavsiye edebilir misin? Teşekkür ederim.

İşte elde ettiğim şey: (Bazı X11 DISPLAY değişkenlerinin ayarlanması gerektiğini görüyorum, ancak ona hangi değeri vermeliyim ve nasıl?)

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

aynı sorunu yaşıyorum, konsolda mükemmel çalışıyor ancak tutulmayı kullandığımda aynı istisnayı atıyor hatta kod satırlarını koyuyorum: Process proc_exporting = Runtime.getRuntime (). exec ("sudo export DISPLAY =: 0.0") ; hala çalışmıyor
hb.Sara

3
PuTTY aracılığıyla uzaktan bir konsola bağlanırken yanıtların hiçbiri bu sorunu çözmek için gereken bilgiyi vermiyor. SSH'yi ele alan herhangi bir cevap, aslında nasıl çalıştırılacağını açıklamaz. Bunu ele alan bir soruyu bilen var mı?

Yanıtlar:


122

Ana ekrandaysanız, o zaman

export DISPLAY=:0.0

veya csh veya tcsh kullanıyorsanız

setenv DISPLAY :0.0

uygulamanızı çalıştırmadan önce.

Aslında otomatik olarak ayarlanmamasına şaşırdım. Bu uygulamayı grafik olmayan bir terminalden başlatmaya mı çalışıyorsunuz? Değilse, varsayılan .profile, .login, .bashrc veya .cshrc'yi değiştirdiniz mi?

DISPLAY'i 0.0 olarak ayarlamanın, dediğim gibi ana ekranda oturduğunuzu veya en azından ana ekranın kullanıcı kimliğinizde oturum açtığını varsaydığını unutmayın. Oturum açılmamışsa veya farklı bir kullanıcı kimliğiyse, bu başarısız olur.

Başka bir makineden geliyorsanız ve bu makinenin ana ekranındaysanız ve X çalışıyorsa, o ana bilgisayara bağlanmak için "ssh -X ana bilgisayar adı" kullanabilirsiniz ve ssh, X ekranını geri iletir. . ssh ayrıca DISPLAY ortam değişkeninin doğru ayarlandığından da emin olacaktır (yukarıda bahsettiğim çeşitli nokta dosyalarıyla karıştırılmaması koşuluyla). Bir "ssh -X" oturumunda, DISPLAY ortam değişkeninin "localhost: 11.0" gibi bir değeri olacaktır ve bu, ssh'nin yerel kutunuza tünel oluşturduğu sokete işaret edecektir.


Merhaba, çok teşekkür ederim, ilki benim için çalıştı. Evet, grafik olmayan bir terminalden başlatıyorum.
user42155

Yine de grafik ekranına erişmek istiyor gibi görünüyor. Grafik ekran mevcut olmadığında veya başka bir kullanıcı kimliğine ait olduğunda çalıştırmamaya dikkat edin.
Paul Tomblin

3
konsolda olduğunuz için bunun işe yaradığını unutmayın. başka bir terminalde olsaydınız, terminalde çalışan bir X sunucunuz olması ve ardından ortamı makinenizi gösterecek şekilde ayarlamanız gerekir (dışa aktarma DISPLAY = 'pauls terminalinin ana bilgisayar adı': 0.0 örneğin)
KevinDTimm

@kevindtimm, İyi nokta - @ Mikeage'ın ssh -X hakkındaki bilgilerini cevabıma dahil edeceğim.
Paul Tomblin

1
Bir X sunucusuna bağlanmayı gerektiren otomatik bir görev çalıştırmanız gerektiğinde, sanal bir X sunucusu oluşturan xvfb'ye bakabilirsiniz. Bu, bazı toplu testler veya çalışan testler için çok kullanışlıdır.
Wichert Akkerman

10

Bunu bir X11 ortamından mı çalıştırıyorsunuz? Bir terminal penceresi kullanabilirsiniz, ancak X içinde olması gerekir (grafiksel bir oturum açtıktan sonra veya startx çalıştırarak).

Zaten bir grafik ortamındaysanız, bash benzeri kabuklar (bash, sh, vb.) İçin DISPLAY =: 0 dışa aktarmayı deneyin veya setenv DISPLAY: C kabuğu tabanlı kabuklar için (csh, tcsh, vb.)

SSH aracılığıyla başka bir makineden bağlandıysanız, oturduğunuz makinede grafik arabirimi görüntülemek için -X seçeneğini kullanırsınız (burada çalışan bir X sunucusu varsa (Windows için xming ve standart Linux X sunucu).


Merhaba, startx çalıştırıyorum.
user42155

Doğru, Slackware. Hala 10 yıl önce en son kullandığım zamanki gibi mi?
Paul Tomblin

Yine de varsayılan olarak çalışma seviyesi 3'te başlar. Elbette, 5. çalışma seviyesinde başlamasını söylerseniz, KDE'yi kurduğunuzu varsayarak güzel bir KDM giriş menüsü elde edeceksiniz.
Adam Jaskiewicz

Teşekkürler! CentOS ve export DISPLAY=:0
SSH'de

8

PuTTy'de X11 yönlendirmeyi etkinleştirmelisiniz

bunu yapmak için PuTTy'yi açın, Bağlantı => SSH => Tüneller'e gidin ve X11 yönlendirmeyi etkinleştir'i işaretleyin

Ayrıca sunucuya sudo ve aşağıdaki değişkeni buradan dışa aktarın IP, yerel makinenizin IP'sidir

export DISPLAY=10.75.75.75:0.0

görüntü açıklamasını buraya girin


4

Açıklanana benzer bir durumda sorun olabilecek bir şey daha var - X yönlendirilmez ve uzak tarafa 'xauth' programı yüklenmediğinde $ DISPLAY ayarlanmaz. "Ssh -Xv ip_address" komutunu çalıştırdığınızda aradığını ve bulunamazsa başarısız olduğunu görebilirsiniz, bu da ayrıntılı modu (başarısız IMO) açmadığınız sürece görülmez. 'Xauth'u genellikle aynı isimli bir pakette bulabilirsiniz.


3

Çok Kolay, Aynı sorunu yaşadım, sonra yaptığım şey, görüntülemeye yardımcı olacak bir uygulamayı indirip yüklemek ve ardından hatayı düzeltti.

Bu uygulamayı xming indirin:

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

Kurun, ardından bu bağlantıdaki ayarları kullanın:

http://www.geo.mtu.edu/geoschem/docs/putty_install.html veya şu adımları izleyin:

PuTTy ve Xming'i Kurmak / Yapılandırmak

PuTTy ve Xming PC'ye indirildikten sonra, ilgili talimatlara göre kurun.

Xming'i Yapılandırma

Xming kurulduktan sonra, 'XLaunch' adlı uygulamayı çalıştırın ve ayarların gösterildiği gibi olduğunu doğrulayın:

  • Ekran Ayarları pencerelerinde Varsayılan girişleri seçin, ileriye tıklayın
  • Oturum Tipi penceresinde ileriye tıklayın.
  • Ek parametreler penceresinde ileriye tıklayın (Bildirim panosu onay kutusu doğrudur)
  • yapılandırmayı kaydedin ve bitirmek için tıklayın.

PuTTy'yi Yapılandırma

PuTTy'yi kurduktan sonra, masaüstündeki PuTTy simgesine çift tıklayın ve gösterildiği gibi yapılandırın:

Bu, bir oturum açma profili oluşturup ardından kaydetmeyi gösterir.

  • Ssh -> X11'de, X11 iletimini etkinleştirmek için onay kutusuna tıklayın.
  • X görüntüleme konumu metin kutusuna localhost yazın: 0.0

profili kaydedin ve ardından test etmek için sunucuya uzaktan bağlanın.

Şerefe !!!


Lütfen bağlantılardan gerekli bilgileri cevabın kendisine ekleyin, çünkü sonunda ölebilirler ve cevabı işe yaramaz hale getirebilirler.
plamut

2

Bunu yapmanın birçok yolu var. Aşağıda kendime uygun bir şey yaptım ve her zaman iyi çalışıyor.

  1. Uzak sunucunuzda xorg-x11-xauth, xorg-x11-font-utils, xorg-x11-fontlarını kurduğunuzdan emin olun.
  2. Xming Sunucusunu yerel masaüstünüzde çalıştırın
  3. Macun üzerinde, sunucuya ssh'tan önce, X11 iletimini etkinleştirin ve görüntüleme konumunu localhost olarak ayarlayın: 0.0
  4. Sunucuda .Xauthority dosyası oluşturulur ve DISPLAY değişkeninin zaten ayarlanmış olduğuna dikkat edin.

    $ xauth listesi

    $ xauth ekle

Test etmek için xclock veya xeyes yazın

Not : Kullanıcıyı değiştirmek için, .Xauthority dosyasını ilgili kullanıcının ana dizinine kopyalayın ve ayrıca bu kullanıcıdan DISPLAY değişkenini dışa aktarın.


0

Komut dosyasını bir Byobu terminalinin içinde başlatırsam JDK 8 ve Netbeans'i yüklemeye çalıştığımda Ubuntu 14.04.01'de aynı sorunu yaşadım (belki Ekranlar ile aynı olur).

Byobu'dan çıkın ve (grafik terminalde) komut dosyasını çalıştırın.


0

İlk Kontrol.

1) EKRAN'ı başka bir makineye aktarırken, xhost +o makinede komutu girdiğinizden emin olun . Bu komut, diğer makinenin EKRAN'larını bu makineye aktarmasına olanak tanır. Güvenlik kısıtlamaları olabilir, bunu bilin. Kontrol etmeniz gerekiyorssh -X MachineIP etmeniz gerekmeyecek xhost +mi?

2) Bazen JCONSOLE Bu JVM işlemi farklı bir kullanıcıyla çalışabileceğinden ve DISPLAY'i başka bir kullanıcıyla dışa aktardığınızdan, tüm sürecini göstermez. takip etsen iyi olurCD_DIR>sudo ./jconsole

3) WAS'ta (WEBSPHERE); jconsole, java sunucusu sürecini bağlayamayacak, bu sefer bağlantıya kadar git ve sonra onu bağlamayı dene. Bu benim için çalıştı. Bu sayfa, jconsole'un o sunucuya bağlanmasını sağlamak için bazı değişkenleri başlatıyor olabilir.

WAS konsolu> Uygulama sunucuları> sunucu1> İşlem tanımı> Java Sanal Makinesi


AIX ile aynı sorunla karşılaştım (yalnızca komut satırı arayüzü mevcut, DISPLAY UI yok) makinesi. Yükleyerek çözdüm

Windows için NX Client

Adım 1: Bu Windows makinesi aracılığıyla GUI konsolunun bulunduğu unix kutusu ile bağlantı kurdum.
Adım 2: Bu UNIX kutusundan AIX kutusuna SSH.
Adım 3: DISPLAY'i "export DISPLAY = UNIXMACHINE: NXClientPORTConnectedMentionedOnTitle" şeklinde ayarlayın.
Adım 4: Şimdi DISPLAY gerektiren herhangi bir programı başlatırsak; bu UNIX kutusunda başlatılacaktır.

VNC

VNC'yi ekranın mevcut olduğu UNIX kutusuna kurduysanız; ardından Windows ve NX İstemcisi gerekli değildir. Adım 1: GUI konsolunun mevcut olduğu Unix kutusuna bağlanmak için VNC'yi kullanın.
Adım 2: Bu UNIX kutusundan AIX kutusuna SSH.
Adım 3: DISPLAY'i "dışa aktarma DISPLAY = UNIXMACHINE: VNCPORT" şeklinde ayarlayın
Adım 4: Şimdi DISPLAY gerektiren herhangi bir programı başlatırsak; bu UNIX kutusunda başlatılacaktır.

BAŞKA

Adım 1: Bu UNIX kutusundan AIX kutusuna SSH.
Adım 2: DISPLAY'i "export DISPLAY = UNIXMACHINE: VNCPORT" şeklinde ayarlayın
Adım 3: Şimdi DISPLAY gerektiren herhangi bir programı başlatırsak; bu UNIX kutusunda başlatılacaktır.


0

Linux'tan Windows'tan çalışan bir X Window uygulaması almaya çalışanlar için:

Benim için işe yarayan şey, Windows makinemde xming sunucusunu kurmak, linux ana bilgisayarına bağlandığımda ve Windows ip adresimi ekran bağlantı noktasıyla ve ardından Windows IP adresimle ekran değişkenini koyduğumda macun içinde X11 yönlendirme seçeneğini ayarlamaktı: 0.0

Xming sunucusunun o ana bilgisayardan gelen trafiği kabul ettiğinden emin olmak için linux ana bilgisayarlarının IP adresini X0.hosts dosyasına eklemeyi unutmayın. Bunu anlamam biraz zaman aldı.


-3

"Ev" ekran makinenizde "host +" komutunu çalıştırmayı unutmayın ve makineye ssh yaptığınızda "ssh -x hostname" yapıyorsunuz.


14
X sunucunuzdaki tüm güvenliği etkin bir şekilde devre dışı bırakırsa, "xhost +" kullanmamanızı şiddetle tavsiye ederim. ssh, X11 kimlik doğrulamasını otomatik olarak kurmak için xauth'u kullanacak kadar akıllıdır, bu nedenle xhost kullanmaya gerek yoktur.
Wichert Akkerman

Bu bir yorum olmalı, gönderi değil. Sırf yorum yapamaman, kötü bir gönderi yapman gerektiği anlamına gelmez.
Elliot A.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.