java.awt.HeadlessException — апплет не отображается — часть 2

Это относится к вопросу java.awt.HeadlessException - апплет не отображается. java.awt.HeadlessException — апплет не отображается

Исключение HeadlessException исчезло после того, как я добавил «export DISPLAY=:0.0» в файл запуска tomcat.sh. Теперь некоторая часть кода запускается на пакетном сервере, который является отдельным сервером. То же самое 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
}

person Vicky    schedule 03.02.2009    source источник


Ответы (1)


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

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

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

person Ry4an Brase    schedule 04.02.2009