Поддельный дисплей 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