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」をクリックしてプロパティーウィンドウを閉じます。
これで実行時にもライブラリが正しく参照されるようになります!