Вопрос

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

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

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

Это было полезно?

Решение

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

java -Djava.awt.headless=true

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

Другие советы

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

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

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

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

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

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

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

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

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

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

-Dglass.platform=Monocle -Dmonocle.platform=Headless -Dprism.order=sw
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top