0

这是参考问题 java.awt.HeadlessException - Applet not displayed。 java.awt.HeadlessException - Applet 未显示

在我在 tomcat 的 startup.sh 文件中添加“export DISPLAY=:0.0”后,HeadlessException 消失了。现在,部分代码在作为单独服务器的批处理服务器上运行。在批处理服务器上调用代码时会发生相同的 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
}
4

1 回答 1

2

您可以捕获该异常,也可以通过首先检查来避免它:

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

不要在没有人会看到的服务器上设置 DISPLAY,否则您可能会永远等待某人在没有人可以看到的对话框上单击“确定”。

于 2009-02-04T04:52:22.313 回答