tomcat8 で X11GraphicsEnvironment の問題が発生し、クラス sun.awt.X11GraphicsEnvironment を初期化できない。
サイトのcaptchaが突然表示されなくなり、以下のエラーが報告されます。以前にもこのエラーが出たことがありますが、キャプチャではないので、いずれにせよ同じ問題です。
原因:java.lang.NoClassDefFoundError: クラス sun.awt.X11GraphicsEnvironment を初期化できませんでした。
ネットで検索した結果、catalina.shに "-Djava.awt.headless=true \ を追加することで解決しました。
調べてみると、Xserverが起動されていない、アクセス権限がないなど、tomcatを起動したユーザがXserverにアクセスできない場合が多いようです。
について、ネット上で議論されています。 ヘッドレスモード の説明
<スパン
1. ヘッドレスモードとは何ですか?
ヘッドレスモードとは、システムのコンフィグレーションモードの一つです。このモードでは、システムには表示デバイス、キーボード、マウスがありません。
<スパン
2. ヘッドレスモードを使用するタイミングは?
ヘッドレスモードはあまり望むところではありませんが、特にサーバーサイドのプログラム開発者にとっては、このモードで作業する必要があることが多いのが実情です。これは、サーバー(Webサービスを提供するホストなど)には前述のようなデバイスがない場合が多いのですが、クライアント(ブラウザが存在する関連ディスプレイデバイス、キーボード、マウスを持つホストなど)に提供する適切なデータを生成するために、それらの機能を利用する必要があるためです。
<スパン
3. ヘッドレスモードの使い方を教えてください。
一般的なルールとしては、プログラムの最初にヘッドレスモードを有効にして、これからヘッドレスモードで作業するので、ハードウェアの助けを期待せず、システムの計算能力に頼ってこれらの機能をエミュレートしてくださいと伝えます。
System.setProperty("java.awt.headless","true") を設定します。
TOMCAT_HOME}/bin/catalina.sh または ${TOMCAT_HOME}/bin/catalina.bat ファイルを以下のように修正します。
以下のようなすべてのコードで。
JAVA_OPTS $CATALINA_OPTS \ \
-Djava.ENDORSED.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \ \?
-Djava.security.manager
-Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \?
-Dcatalina.base="$CATALINA_BASE" \.
-Dcatalina.home="$CATALINA_HOME" ୧⃛(๑⃙⃘◡̈๑⃙⃘)
-Djava.io.tmpdir="$CATALINA_TMPDIR" \.
文末に追加してください。
-Djava.awt.headless=true \?
以下のように修正しました。
exec "$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \.
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \.
-Dcatalina.base="$CATALINA_BASE" \.
-Dcatalina.home="$CATALINA_HOME" ୧⃛(๑⃙⃘◡̈๑⃙⃘)
-Djava.io.tmpdir="$CATALINA_TMPDIR" \.
-Djava.awt.headless=true \?
直接検索して、-Djava.io.tmpdir="$CATALINA_TMPDIR"という行を探して、この行の下に追加してください。
-Djava.awt.headless=true \?
全部で7つあり、変更後に再起動すると直ります。
関連
-
[解決済み] tomcatで、catalina_homeとは何ですか、そしてなぜそれを使うのですか?
-
[解決済み] TomcatにおけるNIOとBIOの根本的な違いは何ですか?
-
[解決済み] ERROR: トランスポートエラー202: デバッグモードでTomcat 7を起動すると、バインドに失敗しました。
-
[解決済み] org.apache.catalina.connector.ClientAbortException: java.io.IOException。APRエラー: -32
-
[解決済み] TomcatがremoveAbandonedTimeoutを無視して、プール内の接続をクローズする
-
maven reports an error the goal you specified requires a project to execute but there is no POM in this direct...
-
メソッド名に無効な文字が見つかりました。HTTPメソッド名はトークンでなければなりません
-
少なくとも1つのJARがTLDをスキャンされましたが、TLDが含まれていません。
-
Tomcat Connectorの実行モードがbioからnioに変更されました。
-
NamingException: このクラスローダーにバインドされているネーミング・コンテキストがありません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】TOMCAT SSL Error: エイリアス名がキーエントリーを識別していない
-
[解決済み] keytool error: java.lang.Exception: 応答からのチェーンの確立に失敗しました
-
Server Tomcat v9.0 Server at localhost の起動に失敗しました。
-
解決方法について サーバ Tomcat v9.0 Server at localhost の起動に失敗しました。
-
深刻:起動中に子コンテナが失敗した
-
tomcat start report c3p0プールの初期化中... Com.mchange.v2.c3p0.
-
tomcat サーバーを起動するとエラーが発生する Context の初期化に失敗しました。
-
[解決済み] NetBeansからのTomcat起動エラー - '127.0.0.1*' が内部コマンドまたは外部コマンドとして認識されない