这是参考问题java.awt.HeadlessException - 不显示Applet。 java.awt.HeadlessException - Applet not displayed
在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
}
答案 0 :(得分:2)
您可以捕获该异常,或者您可以通过先检查来避免它:
if (! java.awt.GraphicsEnvironment.isHeadless()) {
// code that throws headless exception
} else {
log.info("Skipping GUI portion")
}
不要在没有人会看的服务器上设置DISPLAY,或者你可能最终等待有人在没人看到的对话框上点击OK。