これは、質問 java.awt.HeadlessException - Applet not displayed を参照しています。 java.awt.HeadlessException - アプレットが表示されない
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
}