java.awt.HeadlessException - Апплет не отображается - Часть 2 - PullRequest
0 голосов
/ 03 февраля 2009

Это со ссылкой на вопрос java.awt.HeadlessException - Апплет не отображается. java.awt.HeadlessException - Апплет не отображается

Исключение HeadlessException исчезло после того, как я добавил «export DISPLAY =: 0.0» в файл startup.sh Tomcat. Теперь некоторая часть кода выполняется на пакетном сервере, который является отдельным сервером. То же исключение HeadlessException возникает, когда код вызывается на пакетном сервере. Когда я добавил то же самое «export DISPLAY =: 0.0» в файле запуска пакетного сервера, исключение прошло, но это создало проблему для других (не Java) приложений, работающих на пакетном сервере. Вероятно, это связано с тем, что мы переопределяем дисплей, который работает для других приложений.

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

http://java.sun.com/j2se/1.4.2/docs/guide/awt/AWTChanges.html

Так заставит ли это работать безмолвное исключение? Как:

try {

 //Code that throws headless exception

} catch (HeadlessException e) {

  printStacktrace(); //basically do nothing
}

1 Ответ

2 голосов
/ 04 февраля 2009

Вы можете поймать это исключение или избежать его, проверив сначала:

if (! java.awt.GraphicsEnvironment.isHeadless()) {
    // code that throws headless exception
} else {
  log.info("Skipping GUI portion")
}

Не устанавливайте DISPLAY на сервере, на который никто не будет смотреть, иначе вы можете ждать, пока кто-нибудь не нажмет OK в диалоговом окне, которое никто не увидит.

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