"Немає змінної XP DISPLAY" - що це означає?


102

Я намагаюся встановити програму Java на моїй машині Linux (Slackware).

Я отримав таку помилку, і я її не розумію.

Чи можете ви порадити мені, як підійти до проблеми? Дякую.

Ось що я отримую: (Я бачу, що потрібно встановити певну змінну X11 DISPLAY , але яке значення я повинен надати і як?)

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

У мене однакова проблема, вона прекрасно працює на консолі, але коли я використовую eclipse, вона викидає той самий виняток, я навіть ставлю ці кодові рядки: Process proc_exporting = Runtime.getRuntime (). exec ("sudo export DISPLAY =: 0.0") ; все ще не працює
— hb.Sara

3
Жодна з відповідей не дає інформації, необхідної для вирішення цієї проблеми при віддаленому підключенні до консолі через puTTY. Будь-яка відповідь на адресу SSH насправді не пояснює, як змусити його працювати. Хтось знає про питання, яке вирішує це?

Відповіді:


120

Якщо ви знаходитесь на головному дисплеї, то

export DISPLAY=:0.0

або якщо ви використовуєте csh або tcsh

setenv DISPLAY :0.0

перед запуском програми.

Власне, я здивований, що він не встановлюється автоматично. Ви намагаєтеся запустити цю програму з не графічного терміналу? Якщо ні, чи ви змінили типові .profile, .login, .bashrc або .cshrc?

Зауважте, що встановлення DISPLAY на: 0,0 передбачає, що ви сидите за головним дисплеєм, як я вже сказав, або принаймні, що основний дисплей увійшов до вашого ідентифікатора користувача. Якщо він не ввійшов у систему, або він інший користувальницький, це не вдасться.

Якщо ви входите з іншої машини, і ви перебуваєте на головному дисплеї цієї машини, і вона працює під X, ви можете використовувати "ssh -X ім'я хоста" для підключення до цього хоста, і ssh переправить дисплей X назад . ssh також переконається, що змінна середовища DISPLAY встановлена ​​правильно (за умови, що вона не буде переплутана в різних файлах точок, про які я згадувала вище). У сеансі "ssh -X" змінна середовища DISPLAY матиме значення типу "localhost: 11.0", яке вказуватиме на сокет, що ssh тунелює до вашого локального вікна.


Привіт, дуже дякую, перший працював на мене. Так, я починаю це з не графічного терміналу.
— користувач42155

Схоже, він хоче отримати доступ до графічного дисплея. Будьте обережні, щоб не запускати його, коли графічний дисплей недоступний або він належить іншому користувальницькому користувачеві.
— Пол Томблін

3
зауважте, що це спрацювало тому, що ви / були на консолі. якби ви були на іншому терміналі, вам доведеться мати X-сервер, що працює на терміналі, а потім встановити середовище, щоб вказувати на вашу машину (експортувати DISPLAY = 'ім'я хоста термінала
— pauls

@kevindtimm, Добрий момент - я збираюся включити інформацію @ Mikeage про ssh -X у свою відповідь.
— Пол Томблін

1
Якщо вам потрібно запустити автоматизоване завдання, яке вимагає підключення до X-сервера, ви можете подивитися на xvfb, який створює віртуальний X-сервер. Це дуже корисно для деяких пакетних тестів або запущених тестів.
— Вічер Аккерман

10

Ви запускаєте це в середовищі X11? Можна використовувати вікно терміналу, але воно повинно бути в межах X (або після графічного входу, або за допомогою запуску startx).

Якщо ви вже знаходитесь в графічному середовищі, спробуйте експортувати DISPLAY =: 0 для bash як оболонок (bash, sh, тощо) або setenv DISPLAY: 0 для оболонок на основі оболонок C (csh, tcsh тощо)

Якщо ви підключились з іншої машини через SSH, ви використовуєте опцію -X для відображення графічного інтерфейсу на машині, на якій ви сидите (за умови, що там працює X-сервер (наприклад, xming для Windows та ваш стандартний Linux X сервер).


Привіт, я бігаю на стартекс.
— користувач42155

О так, Slackware. Це все ще так само босоніж, як і коли я востаннє використовував його 10 років тому?
— Пол Томблін

Він все ще запускається за замовчуванням у runlevel 3. Звичайно, якщо ви скажете, щоб він починався в runlevel 5, ви отримаєте гарне меню входу в KDM, якщо ви встановили KDE.
— Адам Яскевич

Дякую! на CentOS і SSH (шпаклівка) використовували: export DISPLAY=:0
— jacktrades

8

ви повинні увімкнути перенаправлення X11 у вас PuTTy

щоб відкрити PuTTy, перейдіть до З'єднання => SSH => Тунелі і поставте галочку Увімкнути переадресацію X11

Також sudo на сервер та експорт нижче змінної тут IP - це IP вашої локальної машини

export DISPLAY=10.75.75.75:0.0

введіть тут опис зображення


4

Ще одна річ, яка може бути проблемою у випадку, подібному до описаного, - X не пересилається і $ DISPLAY не встановлюється, коли програма "xauth" не встановлена ​​на віддаленій стороні. Ви можете бачити, що він шукає його під час запуску "ssh -Xv ip_address", і, якщо його не знайдено, виходить з ладу, що не відображається, якщо ви не ввімкнули багатослівний режим (помилка IMO). Зазвичай ви можете знайти "xauth" в однойменному пакеті.


3

Дуже просто, якби ця сама проблема була, то те, що я зробив, це завантажити та встановити додаток, який допоможе у відображенні, а потім виправлено помилку.

Завантажте це додаток xming:

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

Встановіть, а потім скористайтеся налаштуваннями за цим посиланням:

http://www.geo.mtu.edu/geoschem/docs/putty_install.html або виконайте наступні кроки:

Встановлення / налаштування PuTTy та Xming

Після завантаження PuTTy та Xming на ПК встановіть їх відповідно до їх інструкцій.

Налаштування Xming

Після встановлення Xming запустіть програму під назвою "XLaunch" і переконайтеся, що налаштування такі, як показано:

  • виберіть записи за замовчуванням у вікнах налаштувань дисплея, натисніть кнопку далі
  • натисніть далі у вікні Тип сеансу.
  • натисніть далі у вікні Додаткові параметри (Повідомлення буфера обміну повідомленням вірно)
  • збережіть конфігурацію та натисніть, щоб закінчити.

Налаштування PuTTy

Після встановлення PuTTy двічі клацніть піктограму PuTTy на робочому столі та налаштуйте так, як показано:

Це показує створення профілю входу та збереження його.

  • На ssh -> X11 натисніть прапорець, щоб увімкнути пересилання X11.
  • у текстовому вікні розташування X відображайте текст, введіть localhost: 0.0

збережіть профіль, після чого віддалено підключіться до сервера для тестування.

Ура !!!


Будь ласка, включіть у саму відповідь основну інформацію за посиланнями, оскільки вони з часом можуть загинути, роблячи відповідь марною.
— пламут

2

Існує багато способів зробити це. Я зробив щось нижче зручне для мене і завжди добре працює.

  1. На віддаленому сервері обов'язково встановіть шрифти xorg-x11-xauth, xorg-x11-font-utils, xorg-x11-fonts.
  2. Запустіть Xming Server на локальному робочому столі
  3. На шпаклівці перед ssh на сервері увімкніть переадресацію X11 та встановіть місце відображення у localhost: 0,0
  4. На сервері генерується .Xauthority файл і помічають, що змінна DISPLAY вже встановлена.

    $ xauth list

    $ xauth додати

Щоб перевірити це, введіть xclock або xeyes

Примітка . Щоб переключити користувача, скопіюйте файл .Xauthority в домашній каталог відповідного користувача, а також експортуйте змінну DISPLAY від цього користувача.


0

У мене була така ж проблема в Ubuntu 14.04.01, коли я намагався встановити JDK 8 та Netbeans, якщо запускаю скрипт всередині терміналу Byobu (можливо, із екранами відбувається те саме).

Просто вийдіть з Byobu і (у графічному терміналі) запустіть сценарій.


0

Початкова перевірка.

1) Експортуючи DISPLAY на іншу машину, переконайтесь, що ви ввели команду xhost +на цій машині. Ця команда дозволяє іншим машинам експортувати свій DISPLAY на цю машину. Можуть бути обмеження безпеки, просто знайте про це. Потрібно перевіряти ssh -X MachineIPне зажадає xhost +?

2) Інколи JCONSOLEне відображатиметься весь його процес, оскільки цей JVM-процес може працювати з іншим користувачем, і ви експортуєте DISPLAY з іншим користувачем. тому краще слідуйтеCD_DIR>sudo ./jconsole

3) В WAS (WEBSPHERE); jconsole не зможе підключити свій Java-серверний процес, тоді просто перейдіть до посилання, а потім спробуйте підключити його. Це працювало для мене. Можливо, ця сторінка ініціалізує деякі змінні, щоб дозволити jconsole підключатися до цього сервера.

Консоль WAS> Сервери програм> server1> Визначення процесу> Віртуальна машина Java


Я зіткнувся з тією ж проблемою і з машиною AIX (де доступний лише інтерфейс командного рядка, немає інтерфейсу DISPLAY). Я вирішив, встановивши

Клієнт NX для Windows

Крок 1: Через цю машину Windows я з'єднався з Unix box, де доступна консоль GUI.
Крок 2: SSH в поле AIX з цього вікна UNIX.
Крок 3: встановіть DISPLAY на зразок "експортувати DISPLAY = UNIXMACHINE: NXClientPORTConnectedMentionaryOnTitle"
Крок 4: Тепер, якщо ми запустимо будь-які програми, для яких потрібна DISPLAY; вона буде запущена в цьому вікні UNIX.

VNC

Якщо ви встановили VNC у вікні UNIX, де доступний дисплей; тоді Windows та NX-клієнт не потрібні. Крок 1. Використовуйте VNC для підключення до вікна Unix, де доступна консоль GUI.
Крок 2: SSH в поле AIX з цього вікна UNIX.
Крок 3: встановіть DISPLAY на зразок "експортувати DISPLAY = UNIXMACHINE: VNCPORT"
Крок 4: Тепер, якщо ми запустимо будь-які програми, для яких потрібна DISPLAY; вона буде запущена в цьому вікні UNIX.

ELSE

Крок 1: SSH до AIX вікна з цього вікна UNIX.
Крок 2: встановіть DISPLAY на зразок "експортувати DISPLAY = UNIXMACHINE: VNCPORT"
Крок 3: Тепер, якщо ми запустимо будь-які програми, для яких потрібна DISPLAY; вона буде запущена в цьому вікні UNIX.


0

Для тих, хто намагається отримати програму X Window, яка працює з Windows з Linux:

Що для мене працювало, це встановити xming-сервер на моїй машині Windows, встановити опцію переадресації X11 в шпаклівці, коли я підключаюсь до хоста Linux і ввожу IP-адресу Windows з портом дисплея, а потім змінну дисплея з IP-адресою Windows: 0,0

Не забудьте додати IP-адресу хостів Linux до файлу X0.hosts, щоб переконатися, що сервер xming приймає трафік від цього хоста. Зайняв мене час, щоб зрозуміти це.


-3

Не забудьте виконати "хост +" на своїй "домашній" дисплейній машині, а коли ви прихиляєтесь до машини, ви робите "ssh -x ім'я хоста"


14
Я настійно рекомендую не використовувати "xhost +", оскільки якщо це ефективно вимикає всю безпеку на вашому сервері X. ssh досить розумний, щоб використовувати xauth для автоматичного встановлення автентичності X11, тому не потрібно використовувати xhost.
— Вічер Аккерман

Це має бути коментар, а не публікація. Тільки тому, що ви не можете коментувати, це не означає, що ви повинні зробити поганий пост.
— Елліот А.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.