"Немає змінної 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.