Поддельный дисплей X11? - PullRequest
15 голосов
/ 30 января 2009

У меня есть Java-программа, использующая AWT, которую я хотел бы запустить в безголовой системе. Дисплей для программы ничего не делает, кроме отображения статистики. Когда программа заканчивается, она выходит. На дисплее отсутствует взаимодействие с пользователем. Программа создает выходной файл, который я использую в своей системе сборки.

Есть ли способ заставить программу Java работать без настроенного дисплея X11? Могу ли я заставить Java запустить программу, не пытаясь ничего отобразить? У меня нет доступа к исходному коду (это просто файл .jar), поэтому я не могу вносить изменения в исходный код.

Есть мысли о том, как я могу заставить это работать?

Ответы [ 7 ]

30 голосов
/ 30 января 2009

Основной вопрос здесь заключается в том, как запускать приложения Java без X-сервера; предоставление «поддельного» X-сервера - это только один вариант. В Java 1.4 и выше вы можете делать следующее:

java -Djava.awt.headless=true

Это позволяет приложениям, использующим AWT, работать в автономных системах даже без X-сервера.

16 голосов
/ 30 января 2009

Xvfb может делать то, что вы просите. Я сам этим не пользовался, но вот ссылка на википедию: http://en.wikipedia.org/wiki/Xvfb

14 голосов
/ 30 января 2009

Вы можете использовать vncserver.

vncserver :1001
export DISPLAY=localhost:1001
java..

Дополнительным преимуществом является то, что вы можете просматривать графический интерфейс используя vncserver «на всякий случай»

5 голосов
/ 30 января 2009

Может также запускать Xvnc с низким разрешением и глубиной цвета.

1 голос
/ 20 февраля 2009

Как упомянул Чарльз Даффи, традиционный метод - заставить Java обходиться без головы.

Обратите внимание, что вы всегда можете смонтировать jar в Eclipse и использовать jad + jadclipse, чтобы увидеть, что он на самом деле делает, и, возможно, даже переопределить класс, если вам нужно, поместив другой файл класса перед ним в classpath .

Средство, которое может иметь значение, если программа использует Java2D, состоит в том, что более новые версии Java используют оптимизации на сервере X11 для более быстрой визуализации. Уже одно это может послужить причиной для обработки вашей графики сервером X11, подключенным к высокопроизводительной графической карте.

0 голосов
/ 28 июля 2016

Мне удалось получить безголовый режим в OpenJFX с аргументами командной строки

-Dglass.platform=Monocle -Dmonocle.platform=Headless -Dprism.order=sw
0 голосов
/ 30 января 2009

Я с большим успехом использовал в прошлом библиотеки PJA , кажется, что они больше не поддерживаются, но опять же, просто хочу запустить ...

...