Я запускаю Java-программу, которая уже может работать из командной строки, но только если сервер x запущен и работает.
На самом деле на моем Ubuntu 16.04 x64 VPS я получил это исключение java
Причина: java.awt.HeadlessException: переменная X11 DISPLAY не была установлена, но эта программа выполнила операцию, которая требует этого.
Как это исправить?
Я пытался
sudo apt-get install ubuntu-desktop
Конечно, это бесполезно для меня, но я подумал, что этого достаточно, чтобы удовлетворить потребность в X-сервере. ..
Что я мог сделать сейчас?
ОБНОВЛЕНИЕ:
Я попытался, после большого поиска в Google, сделать
root@ziff-01:~# X -configure
(EE)
Fatal server error:
(EE) Server is already active for display 0
If this server is no longer running, remove /tmp/.X0-lock
and start again.
Так , Если X активен, где / как я должен настроить это «DISPLAY var» ?
Установка рабочего стола человечности недостаточно. Проблема состоит в том, что в этом контексте программа запущена за пределами X-сервера.
Вы могли попытаться объявить переменную ДИСПЛЕЯ прежде, чем назвать его, заставив его использовать Ваш (недавно установленный) X-сервер..., но у Вас, вероятно, будут проблемы разрешения. Это было бы похоже: export DISPLAY=:0.0
, который является значением по умолчанию (но не установлен, когда Вы получаете доступ к компьютеру от консоли).
можно здесь искать детали о том, что переменная ДИСПЛЕЯ и как установить ее: , Что является переменной среды $DISPLAY
РЕДАКТИРОВАНИЕ: от Вашей дополнительной информации в вопросе кажется, что Ваш сервер на самом деле использует "дисплей 0", и затем export DISPLAY=:0.0
должен работать. Причина, почему это не делает, происходит, вероятно, из-за прав доступа - необходимо войти X, чтобы смочь отобразить что-либо на нем. Это - то, что я имел в виду при разговоре о полномочиях.
Рекомендуемое решение
Другой (вероятно, лучше) способ иметь дело с ним и что я использовал давным-давно, состоит в том, чтобы использовать виртуальный X-сервер как Xvfb ( https://en.wikipedia.org/wiki/Xvfb), Это действует как X-сервер, но не выполняет операций. Затем Ваше приложение должно быть довольно им. Это - на самом деле один из вариантов использования, перечисленных на статье в Википедии для него.
Для использования его необходимо сделать следующее:
sudo apt-get install xvfb
xvfb-run [your command]
Одно предостережение, хотя: может быть причина Ваших программ для желания X-сервера. Возможно, на самом деле требуется некоторый уровень взаимодействия с пользователем через него, и если это так, не будучи способен видеть то, что продолжается, сделает программу бесполезной...
я рекомендовал бы искать информацию с производителем программы, или другими пользователями этой программы, а не сообществом Ubuntu.