“Tidak ada variabel DISPLAY X11” - apa artinya?

102

Saya mencoba menginstal aplikasi Java di mesin Linux saya (Slackware).

Saya telah menerima kesalahan berikut, dan saya tidak memahaminya.

Bisakah Anda memberi tahu saya bagaimana menangani masalah ini? Terima kasih.

Inilah yang saya dapatkan: (Saya melihat bahwa beberapa variabel TAMPILAN X11 perlu disetel, tetapi nilai apa yang harus saya berikan dan bagaimana?)

~$ 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)
pengguna42155
sumber
Saya mengalami masalah yang sama, ia bekerja dengan sempurna di konsol tetapi ketika saya menggunakan eclipse, ia mengeluarkan pengecualian yang sama saya bahkan meletakkan baris kode itu: Proses proc_exporting = Runtime.getRuntime (). exec ("sudo export DISPLAY =: 0.0") ; masih tidak bekerja
hb. Sara
3
Tidak ada jawaban yang memberikan info yang diperlukan untuk menyelesaikan masalah ini saat menghubungkan ke konsol dari jarak jauh melalui puTTY. Jawaban apa pun yang membahas SSH sebenarnya tidak menjelaskan cara membuatnya berfungsi. Adakah yang tahu tentang pertanyaan yang membahas hal ini?

Jawaban:

120

Jika Anda berada di layar utama, maka

export DISPLAY=:0.0

atau jika Anda menggunakan csh atau tcsh

setenv DISPLAY :0.0

sebelum menjalankan aplikasi Anda.

Sebenarnya, saya heran ini tidak disetel secara otomatis. Apakah Anda mencoba memulai aplikasi ini dari terminal non-grafis? Jika belum, sudahkah Anda mengubah .profile default, .login, .bashrc atau .cshrc?

Perhatikan bahwa mengatur DISPLAY ke: 0.0 mengandaikan Anda sedang duduk di layar utama, seperti yang saya katakan, atau setidaknya tampilan utama masuk ke id pengguna Anda. Jika tidak login, atau itu adalah userid yang berbeda, ini akan gagal.

Jika Anda masuk dari komputer lain, dan Anda berada di tampilan utama mesin itu dan menjalankan X, Anda dapat menggunakan "ssh -X hostname" untuk menyambungkan ke host itu, dan ssh akan meneruskan tampilan X kembali . ssh juga akan memastikan bahwa variabel lingkungan DISPLAY diatur dengan benar (asalkan tidak dikacaukan dalam berbagai file titik yang saya sebutkan di atas). Dalam sesi "ssh -X", variabel lingkungan DISPLAY akan memiliki nilai seperti "localhost: 11.0", yang akan menunjuk ke soket yang disalurkan ssh ke kotak lokal Anda.

Paul Tomblin
sumber
Hai, terima kasih banyak, yang pertama berhasil untuk saya. Ya, saya memulainya dari terminal non-grafis.
pengguna42155
Kedengarannya seperti ingin mengakses tampilan grafis. Berhati-hatilah untuk tidak menjalankannya saat tampilan grafik tidak tersedia, atau milik beberapa userid lain.
Paul Tomblin
3
perhatikan bahwa ini berfungsi karena Anda sedang / berada di konsol. jika Anda berada di terminal lain, Anda harus memiliki server X yang berjalan di terminal dan kemudian mengatur lingkungan untuk menunjuk ke mesin Anda (ekspor DISPLAY = 'nama host terminal pauls': 0.0 misalnya)
KevinDTimm
@kevindtimm, Poin yang bagus - Saya akan memasukkan info @Mikeage tentang ssh -X ke dalam jawaban saya.
Paul Tomblin
1
Jika Anda perlu menjalankan tugas otomatis yang memerlukan koneksi ke server X, Anda dapat melihat xvfb, yang membuat server X virtual. Ini sangat berguna untuk beberapa pengujian batch atau menjalankan pengujian.
Wichert Akkerman
10

Apakah Anda menjalankan ini dari dalam lingkungan X11? Anda dapat menggunakan jendela terminal, tetapi harus dalam X (baik setelah login grafis, atau dengan menjalankan startx).

Jika Anda sudah berada dalam lingkungan grafis, coba ekspor DISPLAY =: 0 untuk bash seperti shell (bash, sh, dll) atau setenv DISPLAY: 0 untuk shell berbasis C shell (csh, tcsh, dll)

Jika Anda telah terhubung dari komputer lain melalui SSH, Anda menggunakan opsi -X untuk menampilkan antarmuka grafis pada mesin tempat Anda duduk (asalkan ada server X yang berjalan di sana (seperti xming untuk windows, dan standar Linux X Anda) server).

Mikeage
sumber
Hai, saya menjalankan startx.
pengguna42155
Oh benar, Slackware. Apakah itu masih barebone seperti saat saya terakhir menggunakannya 10 tahun yang lalu?
Paul Tomblin
Ini masih dijalankan secara default di runlevel 3. Tentu saja, jika Anda memintanya untuk memulai di runlevel 5, Anda akan mendapatkan menu login KDM yang cantik dengan asumsi Anda menginstal KDE.
Adam Jaskiewicz
Terima kasih! pada CentOS dan SSH (dempul) digunakan: export DISPLAY=:0
jacktrades
8

Anda harus mengaktifkan penerusan X11 di PuTTy Anda

untuk melakukannya buka PuTTy, buka Connection => SSH => Tunnels dan centang centang Enable X11 forwarding

Juga sudo ke server dan ekspor variabel di bawah ini di sini IP adalah IP mesin lokal Anda

export DISPLAY=10.75.75.75:0.0

masukkan deskripsi gambar di sini

Girdhar Singh Rathore
sumber
4

Satu hal lagi yang mungkin menjadi masalah dalam kasus yang mirip dengan yang dijelaskan - X tidak diteruskan dan $ DISPLAY tidak diset ketika program 'xauth' tidak diinstal pada sisi jarak jauh. Anda dapat melihatnya mencarinya ketika Anda menjalankan "ssh -Xv ip_address", dan, jika tidak ditemukan, gagal, yang tidak akan terlihat kecuali Anda mengaktifkan mode verbose (IMO gagal). Biasanya Anda dapat menemukan 'xauth' dalam paket dengan nama yang sama.

Арсений Пичугин
sumber
3

Sangat Mudah, Memiliki masalah yang sama maka yang saya lakukan adalah mengunduh dan menginstal aplikasi yang akan membantu dalam menampilkan kemudian memperbaiki kesalahan.

Unduh aplikasi ini xming:

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

Instal, lalu gunakan pengaturan pada tautan ini:

http://www.geo.mtu.edu/geoschem/docs/putty_install.html atau ikuti langkah-langkah berikut:

Instalasi / Konfigurasi PuTTy dan Xming

Setelah PuTTy dan Xming diunduh ke PC, instal sesuai dengan instruksi masing-masing.

Konfigurasi Xming

Setelah Xming diinstal, jalankan aplikasi bernama 'XLaunch' dan verifikasi bahwa pengaturannya seperti yang ditunjukkan:

  • pilih entri Default pada jendela Pengaturan Tampilan, klik berikutnya
  • klik next pada jendela Session Type.
  • klik berikutnya pada jendela parameter tambahan (Perhatikan kotak centang clipboard benar)
  • simpan konfigurasi dan klik untuk menyelesaikan.

Mengonfigurasi PuTTy

Setelah menginstal PuTTy, klik dua kali pada ikon PuTTy di desktop dan konfigurasikan seperti yang ditunjukkan:

Ini menunjukkan membuat profil login lalu menyimpannya.

  • Pada ssh -> X11, klik pada kotak centang untuk mengaktifkan penerusan X11.
  • pada kotak teks lokasi tampilan X, ketik localhost: 0.0

simpan profil kemudian hubungkan jarak jauh ke server untuk menguji.

Bersulang!!!

Peter Azuka Molokwu
sumber
Harap sertakan informasi penting dari tautan di jawaban itu sendiri, karena mereka mungkin pada akhirnya akan mati, membuat jawaban tidak berguna.
plamut
2

Ada banyak cara untuk melakukan ini. Saya melakukan sesuatu di bawah ini sesuai keinginan saya dan selalu berfungsi dengan baik.

  1. Di server jarak jauh Anda, pastikan untuk menginstal xorg-x11-xauth, xorg-x11-font-utils, xorg-x11-font.
  2. Jalankan Xming Server di desktop lokal Anda
  3. Pada putty, sebelum ssh ke server, aktifkan penerusan X11 dan atur lokasi tampilan ke localhost: 0.0
  4. Di server, file .Xauthority dibuat dan perhatikan bahwa variabel DISPLAY sudah disetel.

    $ xauth daftar

    $ xauth tambahkan

Untuk mengujinya, ketik xclock atau xeyes

Catatan : Untuk mengganti pengguna, salin file .Xauthority ke direktori home dari pengguna yang bersangkutan dan juga ekspor variabel DISPLAY dari pengguna tersebut.

Naseer-shaik
sumber
0

Saya mengalami masalah yang sama di Ubuntu 14.04.01 ketika saya mencoba menginstal JDK 8 dan Netbeans jika saya meluncurkan skrip di dalam terminal Byobu (mungkin dengan Layar terjadi hal yang sama).

Cukup keluar dari Byobu dan (di terminal grafis) jalankan skrip.

victe
sumber
0

Pemeriksaan Awal.

1) Saat Anda mengekspor DISPLAY ke mesin lain, pastikan Anda memasukkan perintah xhost +pada mesin itu. Perintah ini memungkinkan mesin lain untuk mengekspor DISPLAY-nya di mesin ini. Mungkin ada kendala keamanan, ketahuilah saja. Perlu memeriksa ssh -X MachineIPtidak akan membutuhkan xhost +?

2) Beberapa kali JCONSOLEtidak akan menampilkan semua prosesnya, karena proses JVM tersebut dapat berjalan dengan pengguna yang berbeda dan Anda mengekspor DISPLAY dengan pengguna lain. jadi lebih baik ikutiCD_DIR>sudo ./jconsole

3) Dalam WS (WEBSPHERE); jconsole tidak dapat menghubungkan proses server java-nya, waktu itu cukup buka tautannya, lalu coba sambungkan. Ini berhasil untuk saya. Mungkin halaman ini menginisialisasi beberapa variabel untuk mengaktifkan jconsole agar terhubung dengan server itu.

Konsol WAS> Server aplikasi> server1> Definisi proses> Java Virtual Machine


Saya telah menghadapi masalah yang sama dengan mesin AIX (di mana antarmuka baris perintah hanya tersedia, Tidak ada UI DISPLAY). Saya menyelesaikannya dengan menginstal

NX Client untuk Windows

Langkah 1: Melalui mesin Windows itu, saya terhubung dengan kotak unix di mana konsol GUI tersedia.
Langkah 2: SSH ke kotak AIX dari kotak UNIX itu.
Langkah 3: atur DISPLAY seperti "export DISPLAY = UNIXMACHINE: NXClientPORTConnectedMentionedOnTitle"
Langkah 4: Sekarang jika kita meluncurkan program yang membutuhkan DISPLAY; itu akan diluncurkan pada kotak UNIX ini.

VNC

Jika Anda menginstal VNC pada kotak UNIX di mana tampilan tersedia; maka Windows dan NX Client tidak diperlukan. Langkah 1: Gunakan VNC untuk terhubung dengan kotak Unix di mana konsol GUI tersedia.
Langkah 2: SSH ke kotak AIX dari kotak UNIX itu.
Langkah 3: atur DISPLAY seperti "export DISPLAY = UNIXMACHINE: VNCPORT"
Langkah 4: Sekarang jika kita meluncurkan program yang membutuhkan DISPLAY; itu akan diluncurkan pada kotak UNIX ini.

LAIN

Langkah 1: SSH ke kotak AIX dari kotak UNIX itu.
Langkah 2: atur DISPLAY seperti "export DISPLAY = UNIXMACHINE: VNCPORT"
Langkah 3: Sekarang jika kita meluncurkan program yang membutuhkan DISPLAY; itu akan diluncurkan pada kotak UNIX ini.

Kanagavelu Sugumar
sumber
0

Bagi mereka yang mencoba mendapatkan aplikasi X Window yang bekerja dari Windows dari Linux:

Apa yang berhasil bagi saya adalah mengatur server xming pada mesin windows saya, mengatur opsi penerusan X11 dalam dempul ketika saya terhubung ke host linux dan memasukkan alamat ip windows saya dengan port tampilan dan kemudian variabel tampilan dengan alamat IP windows saya: 0,0

Jangan lupa untuk menambahkan alamat IP host linux ke file X0.hosts untuk memastikan bahwa server xming menerima lalu lintas dari host tersebut. Butuh beberapa saat untuk mencari tahu.

Subramaniam Ramasubramanian
sumber
-3

Jangan lupa untuk mengeksekusi "host +" pada mesin tampilan "rumah" Anda, dan saat Anda melakukan ssh ke mesin tersebut, Anda melakukan "nama host ssh -x"

Tihamer
sumber
14
Saya sangat menyarankan untuk tidak menggunakan "xhost +" karena jika secara efektif menonaktifkan semua keamanan di server X Anda. ssh cukup pintar untuk menggunakan xauth untuk mengatur otentikasi X11 secara otomatis, jadi seharusnya tidak perlu menggunakan xhost.
Wichert Akkerman
Ini harus berupa komentar, bukan postingan. Hanya karena Anda tidak bisa berkomentar, bukan berarti Anda harus membuat postingan yang buruk.
Elliot A.