Как установить или экспортировать переменную отображения через код Java? - PullRequest
1 голос
/ 07 февраля 2009

Требуется добавить export DISPLAY=:0.0 в файл запуска tomcat и файл запуска пакетного сервера. Это сделано для того, чтобы java увидел библиотеки дисплея X11 в Unix и запустил наш апплет. Без этого экспорта в файлах запуска апплет генерирует исключение без головы.

Хотя этот явный экспорт запускает Java-апплет, он нарушает работу других приложений, работающих на сервере. Есть ли способ, где я могу заставить этот export DISPLAY=:0.0 запускаться из кода Java вместо добавления его в загрузочные файлы? И если это возможно, будет ли это хорошим подходом?

Я уже пытался установить системное свойство на -Djava.awt.headless=true, но оно не сработало. Как указано в приведенной выше ссылке http://java.sun.com/developer/technicalArticles/J2SE/Desktop/headless/, также сказано, что установка headless = true будет работать только для нескольких компонентов, таких как Canvas, Panel, но не будет работать для компонентов верхнего уровня.

Так что я чувствую, что для меня остается только использовать export DISPLAY=:0.0. Это заставляет мой апплет работать, когда он установлен в файлах запуска, но вызывает проблемы для других приложений, работающих на сервере. Так что если кто-нибудь может помочь мне заставить export DISPLAY=:0.0 работать так, чтобы он не мешал другим приложениям на сервере. Я думал, что одним из способов является экспорт дисплея через код.

Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

3 голосов
/ 07 февраля 2009

Я полагаю, что вы действительно можете установить системное свойство -Djava.awt.headless=true, которое позволит получить доступ к графическим библиотекам без необходимости отображения.

См. http://java.sun.com/developer/technicalArticles/J2SE/Desktop/headless/ для получения дополнительной информации.

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

Судя по вашему вопросу, что-то серьезно не так с вашей конфигурацией. Tomcat должен всегда иметь возможность работать на стороне сервера без дисплея. Апплеты всегда запускаются в браузере и получают среду x11 из браузера. Банку апплета может обслуживать tomcat, apache или что-то еще, но это не имеет значения.

Если ваши апплеты взаимодействуют с сервером, убедитесь, что код сервера полностью отделен от кода вашего апплета (храните их в отдельных проектах) и что он не использует какой-либо код AWT. Если это так (для работы с изображениями и т. Д.), То используйте -Djava.awt.headless, как сказал jdewald.

0 голосов
/ 08 февраля 2009

Как это влияет на другие приложения? Как вы определяете переменную среды в ваших сценариях запуска? Если вы правильно определяете переменную, она должна влиять только на программы, запускаемые вашим стартовым скриптом, то есть Tomcat и пакетный сервер.

Кроме того, ваш оригинальный вопрос на самом деле не складывается. Вы используете сервер и клиент (Tomcat и веб-браузер) на одном компьютере?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...