[Java] Maven を使った Web アプリで「NoClassDefFoundError」が発生した時の対処法

Maven で依存関係を管理している Web アプリを作る際(例えば Web アプリで Spring フレームワークを利用する場合など)、コンパイル時にはエラーは発生しないのに、実行時に「NoClassDefFoundError」が発生することがあります。 その際の対処法です。

    Web アプリの場合、実行時に必要なライブラリは「WEB-INF/lib」内になければいけないのですが、Maven で依存ライブラリの設定をしただけではそこまで面倒を見てくれません。 そこで、手動で Maven に登録されているライブラリを「WEB-INF/lib」に配備する設定を行う必要があります。

    Pleiades All in One (4.2 Juno) for Java で説明します。

    プロジェクト上で右クリック ⇒ [プロパティー] で、「Deployment Assembly」を選択し、右に表示される画面で「追加」をクリックします(下図)。

    次に表示される画面で「Java Build Path Entries」を選択し、「次へ」をクリックします(下図)。

    次に表示される画面で、「Maven 依存関係」を選択し、「完了」をクリックします(下図)。

    すると、「Maven 依存関係」が「WEB-INF/lib」に配備されるように設定されたことが確認できます(下図)。

    プロジェクトのプロパティーウィンドウの「OK」をクリックしてプロパティーウィンドウを閉じます。

    これで実行時にもライブラリが正しく参照されるようになります!


    Pocket
    Bookmark this on Yahoo Bookmark

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>