Поддельный дисплей X11?

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

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

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

Ответы

Ответ 1

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

java -Djava.awt.headless=true

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

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

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

Ответ 5

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

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

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

Ответ 6

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

Ответ 7

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

-Dglass.platform=Monocle -Dmonocle.platform=Headless -Dprism.order=sw