2

HP Unix で Tomcat 5.5.23、JDK 1.5 を使用しています。Tomcat から呼び出されたときにアプレットを開始するアプリケーションがあります。JDK 1.4 までは問題なく動作していました。しかし、JDK 1.5 に移行したため、アプレットが起動しません。スローされる例外は - java.awt.HeadlessException: No X11 DISPLAY 変数が設定されていませんが、このプログラムはそれを必要とする操作を実行しました。

次に JAVA_OPTS="-Djava.awt.headless=true" を catalina.sh ファイルに追加しました。しかし、それでも同じヘッドレス例外が発生しますが、今回は X11 ディスプレイ メッセージがありません。

どんな助けでも大歓迎です。

4

7 に答える 7

2

奇妙なことに、Tomcat内でアプレット(java.awt.Appletのサブクラスについて話していると思います)を実行しようとしていますか?アプレットを表示するディスプレイがないため、通常、これは機能しません。

アプレットをどこにも表示せず、その一部をプログラムで実行したい場合は、XvfbやXvncなどの仮想Xサーバーを使用して取得できる可能性があります。tomcatを実行しているホストでXvfbまたはXvncを実行したら、仮想Xサーバーの表示を使用するようにtomcat起動スクリプト内でDISPLAYを設定しようとする場合があります。

于 2009-01-19T16:54:54.953 に答える
2
-Djava.awt.headless=false

上記を Tomcat 起動スクリプトに追加します。それは 100% 動作します

于 2012-07-10T14:19:55.887 に答える
1

グラフィック コンポーネント (Swing オブジェクト、画像など) など、ヘッドレス システムでは動作しないものを Java コードで使用している可能性があります。これらのコンポーネントの一部は、Java によって直接処理されるのではなく、基盤となるプラットフォーム (Windows カーネル自体または Unix 上の X-Window サーバー) によって処理されます。このようにして、アプリケーションの全体的なパフォーマンスが向上します。

問題は、それが Java 1.4 で動作していた場合、なぜ 1.5 で動作しないのかということです。Java 1.2 以降の Swing のパフォーマンス向上を考えると、Sun は一部のグラフィック オブジェクトの管理を OS レベルに移行してパフォーマンスを向上させたのではないかと思います。したがって、1.4 に固執できない場合は、コードを修正する必要があります。

この優れた記事は、アプリケーションを変更してヘッドレス対応にする方法を理解するのに役立ちます。

于 2009-01-18T21:57:51.130 に答える
0

x11 ライブラリをインストールするか、少なくともそれらへのパスを明示的にエクスポートする必要がある場合もあります。

/usr/X11R6/lib

于 2009-01-15T07:39:33.417 に答える
0

アプレットは、サーバー側で実行するのに苦労するでしょう。これらは、Web ブラウザーなどのコンテナー内で実行するように設計されています。アプレットが GUI を描画しようとしており、サーバーがこれをサポートしていないため、例外がスローされる可能性が最も高いです。JDK 1.4 で動作したことに驚いています。これに影響を与えた 2 つのリビジョン間で何が変更されたのかはわかりません。

于 2009-01-14T23:23:24.947 に答える