« Virtual PC 2007 でた! | メイン | UbuntuにOracle Express Editionを入れる »

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>");
}

%>

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

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

 

トラックバック

このエントリーのトラックバックURL:
http://rutake.ddo.jp/blog/mt-tb.cgi/77

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2007年07月19日 14:44に投稿されたエントリーのページです。

ひとつ前の投稿は「Virtual PC 2007 でた!」です。

次の投稿は「UbuntuにOracle Express Editionを入れる」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。