ClassNotFound/NoClassDefFoundErrorへの対応

事象説明

    JVMがクラスをロードしようとしたが見つからなかった場合に発生します。

状況の確認方法

    APログにjava.lang.ClassNotFoundExceptionもしくはjava.lang.NoClassDefFoundErrorのスタックトレースが出力されます。

採取資料
復旧方法

    本エラーの性質上、単に再起動を行っても同様の障害になる可能性が非常に高く、次に説明する対策を行う必要があります。

予防のための対策

    該当のクラスがjarファイルに含まれているかの確認

      JVMが出力するスタックトレースに、ロードしようとした該当クラスの名前が出力されます。jarコマンドを使用して、そのクラスが含まれるべきjarファイルに含まれているかどうかを確認してください。

    必要なjarファイルが配備されているかの確認

      該当クラスを含むjarファイルが配備されているかどうかを確認してください。

    使用する共有コンポーネントの確認

      共有コンポーネントを使用するためには、各サーバコンポーネントの設定で「使用する共有コンポーネント」を選択する必要があります。選択されていない共有コンポーネントは読み込まれません。各サーバコンポーネントで、使用すべき共有コンポーネントが選択されているかを確認してください。

    環境変数CLASSPATHの確認

      該当クラスがサーバコンポーネントでも共有コンポーネントでもないjarファイルに含まれる場合、そのjarファイルへのパスがCLASSPATHに間違いなく設定されているかどうかを確認してください。APログと同じディレクトリに生成されるファイル、<プロセスグループ名>_sys.<プロセスid>.logの「CLASSPATH=」で始まる行に環境変数CLASSPATHの値が出力されますので、その値で確認できます。


関連情報