Как запустить программу Java awt Hedless в серверной среде?
Я запускаю Java-программу, которая уже может работать из командной строки, но только если сервер Ax работает и работает.
На самом деле на моем Ubuntu 16.04 x64 VPS я получил это исключение Java
Причина: java.awt.HeadlessException: переменная X11 DISPLAY не была установлена, но эта программа выполнила операцию, которая требует этого.
Как это исправить?
Я пытался
sudo apt-get install ubuntu-desktop
Конечно, это бесполезно для меня, но я подумал, что этого достаточно, чтобы удовлетворить потребность в X-сервере...
Что я мог сделать сейчас?
ОБНОВИТЬ:
Я попытался после долгих поисков сделать
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"?
1 ответ
Установка Ubuntu-рабочего стола не достаточно. Проблема в том, что в этом контексте программа запускается вне X-сервера.
Вы можете попытаться объявить переменную DISPLAY перед ее вызовом, чтобы она использовала ваш (недавно установленный) X-сервер... но у вас, вероятно, будут проблемы с разрешениями. Это будет выглядеть так: export DISPLAY=:0.0
, который является значением по умолчанию (но не устанавливается при доступе к компьютеру из консоли).
Вы можете посмотреть здесь подробности о том, что такое переменная DISPLAY и как ее установить: Что такое переменная окружения $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.