自分が遭遇することも多いので必然的に検索ランキング上位に位置するようになった前回の 「NoClassDefFoundErrorの原因を探る 」 エントリーでは特にWebアプリの対応を挙げていなかったので今回はTomcatに焦点を絞ってみたい。
Tomcatの場合共通系のライブラリにjarファイルを置くことはあまりしない(JDBCドライバぐらい)はずなのでjarファイルを置く場所としては下記の場所になる。
コンテキストベース/WEB-INF/lib
ここに目的のjarファイルがないとNoClassDefFoundErrorが実行時にでてしまう。 難しいのは実行時にしか起こらないことと、コンパイル時には判明しないjar同士の依存関係があること。
あわてることは無いので一つ一つ出るたびにjarファイルを探してきて、 上記ディレクトリに配置してTomcatあげなおすの繰り返しで解決するしかない。
実行時エラーとはいえコンパイルエラーと同様本来起こってはいけないエラーなので、 設定系を担当している人はこれが出てしまったら自分が怠けているってことだぜ!