0

これは、質問 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
}
4

1 に答える 1

2

その例外をキャッチするか、最初にチェックすることでそれを回避することができます。

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

誰も見ないサーバーにDISPLAYを設定しないでください。そうしないと、だれも見ることができないダイアログで誰かが[OK]をクリックするのを永遠に待つことになります。

于 2009-02-04T04:52:22.313 に答える