java.lang.NoClassDefFoundError: Could not initialize class [クラス名] というエラーが発生しました。
該当クラスのクラスファイルは存在します。原因を教えてください。
※ 本エラーは、Java VM の実装に依存します。
java.lang.NoClassDefFoundError: Could not initialize class [クラス名]
上記の「Could not initialize class [クラス名]」というエラーメッセージから、該当クラスのクラスファイルは見つかっていますが、クラスの初期化に失敗していることがわかります。
※ クラスファイル自体が見つからない場合、エラーメッセージは以下のようになります。(com.example.Foo の場合)
- java.lang.NoClassDefFoundError: com/example/Foo
上記のクラスの初期化中に何らかのエラーが発生していると思われますので、クラスの static イニシャライザに try ~ catch を追加してエラー内容をログに出力するなどして、エラーの原因を確認してください。
なお、NoClassDefFoundError: Could not initialize class [クラス名] というエラーは以下のようにして発生します。
[Step1]
1. クラスまたは親クラスの初期化時にエラーまたは例外が発生する。
2. 初期化時にエラーが発生したことをクラスにマークする。
3. エラーが発生した場合はそのエラーを、例外が発生した場合は ExceptionInInitializationError を投げる。
(ここで投げられたエラーは、その後に発生するエラーや例外によって隠されてしまう場合がある)
[Step2]
1. 別の箇所で再び同じクラスの初期化を行おうとする。
2. 以前の初期化でエラーが発生しているかどうかマークをチェックする。
3. 以前の初期化でエラーが発生したとマークされているため、初期化を行わず NoClassDefFoundError を投げる。
【対象製品】Application Server
【確認済みのバージョン】すべて
【確認済みのエディション】すべて
【確認済みの対象OS】すべて
【確認済みのJavaバージョン】すべて
【コンポーネント】配備
【カテゴリー】トラブルシューティング