Как запустить программу Java awt Hedless в серверной среде?

Я запускаю 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» ?

0
задан 7 July 2016 в 20:28

1 ответ

Установка рабочего стола человечности недостаточно. Проблема состоит в том, что в этом контексте программа запущена за пределами 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.

0
ответ дан 7 July 2016 в 20:28
  • 1
    Это должно работать на OP, но перестанет работать, если имена файлов имеют пробелы... – Zanna 1 February 2018 в 11:03

Другие вопросы по тегам:

Похожие вопросы: