Java DISPLAY değişkeninin değeri olarak 'localhost: 10.0' kullanılarak X11 pencere sunucusuna bağlanılamıyor


98

Localhost'ta 10.0 numaralı bağlantı noktasında X11'i görüntülemek için bağlanmak için java kullanan bir komut dosyam var

ama her zaman bu hatayı alıyorum

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)

Bu sorunu çözmek için her şeyi denedim:

export DISPLAY=:10.0
export DISPLAY=localhost:10.0

Port 0.0'ı da denedim ama hep aynı hatayı alıyorum

xhost'u denedikten sonra

xhost +local:all
xhost:  unable to open display ""
xhost:  unable to open display ":10.0"

Bunu nasıl düzeltebilirim, X Sunucusunun çalışmadığını düşündüm, bu yüzden startxo bağlantı noktasında çalıştığını söylüyor denedim

sistemim Ubuntu sunucu sürümü 10.04

Yanıtlar:


38

Bu komut sorunu çözmeme yardımcı oldu:

export DISPLAY=:0

41
unset DISPLAYbana yardım etti ( export DISPLAY=:0hatayı aldımCan't connect to X11 window server using ':0'
beluchin

2
Nereye koydunuz
Spektakulatius

1
iyi bir zaman - linux üzerinde çalışmayacaktır, o zaman Xvfb'yi apt ile kurmak ve aşağıdaki gibi herhangi bir ekranda çalıştırmak iyidir: Xvfb: 1 ve sonra derleme aşamasında değişken ayarlayın - dışa aktarma DISPLAY =: 1 -> bu mükemmel çalışıyor.
Pankaj Kumar Katiyar


Bu davranış için herhangi bir sebep var mı?
Annapoorni D

61

-Djava.awt.headless=trueParametreyi başlangıçta belirtmeniz gerekir .


Çok teşekkürler ama bunu tam olarak nerede belirtmem gerekiyor?
Elteroooo

1
"Main" iş parçacığında istisna java.awt. Java.awt.GraphicsEnvironment.checkHeadless'ta adlessException (GraphicsEnvironment.java:1 73)
Elteroooo

Bir güvenlik yöneticisi çalıştırıyor musunuz? Öyleyse, için izin vermeniz gerekebilir.
Michael-O

1
teşekkürler sorun, X Sunucusunun başka bir bağlantı noktasında çalışıyor
olmasıydı

2
Soruyu soranın programı yapmak istiyor ij.io.Opener.openJpegOrGif, bunun muhtemelen bir GUI gerektirdiğini tahmin edebiliriz. Yani başsız başka hata ile sonuçlanır: java.awt.HeadlessException.
Nicolas Raoul

42

DISPLAY değişkenini kaldırın

unset DISPLAY

Bu, çoğu durumda yardımcı olur (örneğin, uygulama sunucularını veya diğer java tabanlı araçları başlatmak) ve o kadar çok komut satırını değiştirmekten kaçınır.

Özel bir uygulama sunucusu / araçlar kullanıcısı için .bash_profile dosyasına eklemek de rahat olabilir.


1
bana hiç yardımcı olmadı. Bunu anladım: AWT X11 pencere sunucusuna şu şekilde bağlanamıyor ...
Pankaj Kumar Katiyar

Uygulamanız awt kullanıyorsa, DISPLAY'i doğru şekilde ayarlamalısınız. Bu, awt kullanmayan uygulamalar içindir.
bebbo

Bununla uğraşırken, bash dosyanıza unset komutunu ekledikten sonra mobaXterm'i yeniden başlattığınızdan emin olun. Display değişkeni önceden ayarlanacağından ve sadece bash dosyanızı çalıştırmak bunu değiştirmeyecektir.
mrk

19

Sanırım sudo modunda çalışıyorsunuz.Lütfen kullanıcı modunu kontrol edin ve tekrar deneyin


4
Bu benim de sorunumdu. Yine de root olarak çalışamamak garip görünüyor, değil mi?
javajavajava

Neden sudo kullanamıyorum?
Andrea Borgogelli Avveduti

@kafadergisi
Harsh V Pillai

Benim için çalıştı ... benim durumumda X11 sunucusunun yalnızca mevcut oturumun sahibi tarafından başlatılabileceğini düşünüyorum root
denniz crypto

9

CI'da (jenkins, ..) maven-surefire-plugin aracılığıyla otomatik birim testlerini çalıştırmaya çalışan ve yukarıda belirtilen hatayı alan herhangi biri, surefire eklenti yapılandırmanızı güncellediğinizden emin olun:

<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>

1
kademeli olarak nasıl yapılacağı ve ayrıca içindeki özellik değerinin nasıl ayarlanacağı.
Sobhit Sharma

8

Bu sorunu çözecektir:

/usr/bin/java -Djava.awt.headless=true $Your_program

Benimkini düzeltmedi
Alex Shnyrov

1
Bu benim için çalıştı. Teşekkür ederim. Hata alıyordum çünkü poi kullanıyorum.
dev4life

6

Benim için -X yerine -Y olarak oturum açıyorum .

Aşağıda gösterildiği gibi, güvenilmeyen X11'e sahipseniz, bunun yerine -Y bayrağını deneyin (ana bilgisayara güveniyorsanız):

Uyarı : güvenilmeyen X11 yönlendirme kurulumu başarısız oldu: xauth anahtar verileri oluşturulmadı


4

Başsız fedora 22 ile ahududu pi 2'ye cam balığı yüklemek için birkaç gün boşuna çabaladıktan sonra, Aşağıdakiler benim için sorunsuz çalıştı

 unset DISPLAY
java -Djava.awt.headless=true -jar glassfissh-installer-v2ur2-b04-linux.jar

yardımımı buradan aldım


4

İlk olarak: XQuartz'ı başlatın

İkinci: ssh -X kullanıcı @ ip_adresi

...: sürecinizi başlatın

ssh ve ardından XQuartz'ı başlatırsanız, bu hatayı alırsınız


3

/ Etc / profile kullanılıyorsa veya ayarlıysa, önce bunu Build Phase of Jenkins'te yapın:

unset DISPLAY
export DISPLAY=:0

daha sonra bu özelliği java kodunda veya maven kullanarak ayarlayın: -Djava.awt.headless = false


3

Su kullanarak ekranı dışa aktarmaya çalışıyorsanız ve hala çalışmıyorsa. Bu benim için çalıştı. Sudo kullanıcıları için X11 yönlendirmeyi deneyin.

Uzak ana bilgisayarı ssh ile -X seçeneğini kullanarak bağlayın.

# ssh -X root@remote-host

Şimdi mevcut kullanıcı için coockie setini listeleyin.

# xauth list $DISPLAY
    node01.thegeekdiary.com/unix:10  MIT-MAGIC-COOKIE-1  dacbc5765ec54a1d7115a172147866aa
# echo $DSIPLAY
    localhost:10.0

Sudo kullanarak başka bir kullanıcı hesabına geçin. Çerezi yukarıdaki komut çıktısından sudo kullanıcısına ekleyin.

# sudo su - [user]
# xauth add node01.thegeekdiary.com/unix:10  MIT-MAGIC-COOKIE-1  dacbc5765ec54a1d7115a172147866aa

Sudo kullanıcısı için 2. adımdaki ekranı tekrar dışa aktarın. X istemci uygulamalarının beklendiği gibi çalışıp çalışmadığını doğrulamak için xclock komutunu deneyin.

# export DISPLAY=localhost:10.0

kaynak: https://www.thegeekdiary.com/how-to-set-x11-forwarding-export-remote-display-for-users-who-switch-accounts-using-sudo/


2

Xming kullanıyordum ve benzer bir hata aldım. Sorunu çözmek için aşağıdaki adımlar atıldı:

  1. Xming başlatmasında erişim kontrolü yok kutusunu işaretleyin.
  2. Macun içinde aşağıdaki komutu çalıştırdı: DISPLAY=XXX.XXX.XXX.XX:0.0; export DISPLAY

XXX.XXX.XXX.XXIP adresinizle değiştirin .


Ben de aynı konfigürasyondayım, ancak işe yaramadı. X0.hosts dosyasında X11'i çalıştıran IP'yi eklemem gerekiyor
Christophe Moine

2

Çözüldü. Sadece çıkış yapıyorum ve xorg ile giriş yapıyorum!


1
dışa aktarma DISPLAY =: 0 veya dışa aktarma DISPLAY =: 1 benim için çalışmadı. Çıkış yapmak ve giriş yapmak benim için sorunu çözdü.
Optimus

1

Hudson'da bu hatayı görürseniz, .java dizinini ana dizininizden kaldırmayı deneyin, sizin için işe yarayabilir.


1

Michael-O, sorunu çözmek için yararlı bir yaklaşım sundu. Bunu çözmenin bir başka yolu da sunucuyu Putty Console ile başlatmaktır.


bunun nasıl çalıştığını biraz daha açıklayabilir misin? (Hiç macun kullanmadım)
mrk

1

Benim durumumda makinemde yer kalmamıştı ve ben de aynı sorunla karşılaştım. Bazen uzay sorunu olabilir. Linux / Unix ortamınızdaki alanı kontrol edin ve makinenizin yeterli alana sahip olduğundan emin olun.


1

$ DISPLAY değişkeninin ayarlanıp ayarlanmadığını aşağıdaki komutla kontrol edin:

echo $ EKRAN

display değişkeni ayarlanmamışsa, ayarlamak için aşağıdaki komutu çalıştırın (ayarlanmış olsa bile, oturumunuz için aşağıdaki komutu kullanabilirsiniz)

ihracat EKRANI =: 0.0

macun içinde ayrıca x görüntüleme konumu şu şekilde bulunur: 0.0


1

Bu benim sorunumu çözdü

xhost +

ancak xhost +kimlik doğrulamayı tamamen devre dışı bıraktığını ve herkesin ekranınızdaki tüm uygulamalara erişmesine izin verdiğini unutmayın.

xhost +si:localuser:root uygun kimlik doğrulama ile benzer şekilde çalışıyor gibi görünüyor.


1

Üzerinde çalıştığım Linux sunucusunda da aynı sorunu yaşadım. Java'yı bir X11 ekranına bağlamak baş düğümde çalıştı, ancak başka hiçbirinde işe yaramadı. Yöneticiyle iletişime geçtikten sonra, iş planlama sistemimizin (SLURM) mevcut sürümünün X11 yönlendirmeyi desteklemediği ortaya çıktı. Çalışması için SLURM'yi (SLURM'nin daha yeni sürümleri desteklemektedir) güncellemeleri gerekiyordu.



0

Jconsole komutunu uzaktan çalıştırdığımda sizinle aynı hatayla karşılaşıyorum. Uzak bir Linux ana bilgisayarında çalışan jconsole'daki bir parametreyi değiştirmek istiyorum, ana bilgisayarda secureCRT kullanarak oturum açabilirim, terminal bu hata bilgisini atar. Neyse ki, Macunu kullandığınızda sorun yok. Tuhaf....


0

Ssh tarafından oturum sırasında bir uzak sunucuda uygulamayı başlatırsanız daha sonra başka bir yol ile ssh başlamak olacaktır -xparametresi veya eklenti ForwardX11 noGözlerinde farklı /etc/ssh/ssh_config. Bu durumda ssh, DISPLAY ortam değişkenini yaratmayacaktır.


0

Benim için sorun, xorg-x11-xauth'un kurulu olmamasıydı. Kurdum ve sonra çalıştı.

Şu anda sahip olduğum paketler:

  • libX11-common-1.6.3-2.el6.noarch
  • libX11-1.6.3-2.el6.i686
  • libX11-1.6.3-2.el6.x86_64
  • xorg-x11-drv-ati-firware-7.6.1-2.el6.noarch
  • xorg-x11-xauth-1.0.9-1.el6.x86_64

0

Kodunuzu Jenkins'ten tetikliyorsanız, "Xvfb'yi derlemeden önce başlat ve sonra kapat" seçeneğini etkinleştirmek yardımcı olabilir. Bana yardımcı oldu.


0

başka bir kullanıcıyla değiştirin ve root dışında deneyin. benim için çalışıyor.



0

Ubuntu 17.10 için X sanal çerçeve arabelleğini (xvfb) yükleyin

apt install xvfb

Ve bu satırları / etc / profil dosyasına ekledi ...

# 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

2
Şimdi sadece "iş parçacığında özel durum" main "java.awt.AWTError: DISPLAY değişkeninin değeri olarak 'localhost: 1.0' kullanılarak X11 pencere sunucusuna bağlanılamıyor." Ubuntu 16.04 üzerinde. Xvfb ikili dosyası artık / usr / bin konumunda görünüyor, / usr / X11R6 / bin değil, ancak bana "Ekran 0 (EE) eklenemedi" veriyor.
Chris Jenks

0

Benim durumumda bu hata DISPLAY bağlantı noktasıyla ilgili değildi. Windchill'e (bir PLM yazılımı) bir XML yüklemeye çalışıyordum ve terminalde yalnızca yukarıdaki hatayı aldım. Bir günlük dosyasında XML dosyamın bozuk olduğu raporunu buldum . Belki birinin benzer bir sorunu vardır ve bu cevabı kullanabilir.


0

Benim sorunum güvenlik duvarıyla ilgiliydi. Geçici olarak devre dışı bıraktı.

[DÜZENLE] Ve sunucu ana bilgisayar adı başka bir IP'yi gösteriyordu. Basitçe yerel sunucu olarak ayarlayın. strace xclockbu sorunun giderilmesine yardımcı oldu.


0

Xorg kullanarak oturum açarak bu sorunu çözdüm. Varsayılan olarak Wayland kullandım. Görünüşe göre Wayland, Xorg'un kendi sorunları olan tasarım kusurlarının çoğunu ortadan kaldırıyor.görüntü açıklamasını buraya girin

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.