NoClassDefFoundErrorの原因を探る

本番環境にUPする時など環境が変わったときに遭遇しやすいこのエラー

開発時は問題なかったのにいざ本番で出るとびびる上にだいたいそういう時はテンパリモード1000%
なので冷静な判断ができないだろう。

しかし結局のところクラスパスの設定が間違っているというのがほとんどなのでクラスパスを列挙させてみるといい。
たとえばjspなら以下のコードを入れてみる。

<%
//クラスパス表示
String classpath = System.getProperty(“java.class.path”);
java.util.StringTokenizer st = new java.util.StringTokenizer(classpath,”;”);
while (st.hasMoreTokens()){
out.println(st.nextToken() + “<br&gt”);
}

%>

そしてきちんと動く環境のクラスパスと比較してみる。
クラスパスがまったく一緒なのに動かない場合はJARファイルなどのライブラリがきちんと存在しているか?
コンパイル環境ではコンパイルエラーとなるので気づくが、実行環境ではクラスをロードするときまでエラーが出ないので厄介だ。

たいていの場合において開発環境にはたくさんJARファイルが入っていてどれがどれに依存しているかわからなくなって、
必要なJARを本番環境にコピーし忘れてこのエラーに遭遇するというケースも多い。

 

カテゴリー: Java タグ: , , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload the CAPTCHA.