- - PR -
突然java.lang.NoClassDefFoundErrorが発生
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-04-28 21:11
お世話になります。
一点、質問があります。 Sun One Application Server 7を使用しているのですが、 普段は普通に稼動しているのですが、自作のjarのクラスを 呼ぶと突然、NoClassDefFoundErrorが発生します。 以後はこのjar内のクラスを呼び出すと同様のエラーが出つづけます。 Aplication Serverを再起動すると治ります。 ですが、しばらくすると(何時間か後の場合もあれば、何日か後の場合もあります)、 再度発生します。 このような現象の考えられる原因について何かわかる方いらっしゃいましたら ご教授願います。 一つ、怪しいのが、jarを作った際のJDKのバージョンと Aplication ServerのJDKのバージョンが違うのが原因の可能性もあるのかなと 思ったのですが、このようなケースはざらにありそうですので、 多分違いますね。 | ||||||||||||
|
投稿日時: 2004-04-29 03:29
FD が枯渇してファイルの読み込みが出来なくなっているということはないでしょうか?
| ||||||||||||
|
投稿日時: 2004-04-29 06:52
クラスの静的メンバの初期化などに失敗し再ロードできなくなっているのではないでしょうか。
| ||||||||||||
|
投稿日時: 2004-04-29 18:20
回答ありがとうございました。
ですが、まず、FDとは何でしょうか? すいません。。無知で。。
これについては、わかりませんが、ログなどには何も出力されていません。 ただ、静的メンバ等はクラスのロード時のみ行われ、 その後は静的メンバの初期化は行われないと思っていたのですが、 そもそも違いますか? 因みに、このクラスではJNIを使用していて、
みたいな感じで使用しています。 | ||||||||||||
|
投稿日時: 2004-05-02 07:28
ApplicationServer内でWEB-INF/lib,classesディレクトリに格納したクラスはダイナミックにロードされ、また、起動中に、クラスの変更をなどのイベントを受け付け再ロードされます。
本現象はSystem.loadLibrary()を実行しているクラスが何かしらの原因で再ロードされたため発生したのではないでしょうか。JNIを利用してライブラリを複数回ロードしたときにJVMに障害が発生するというケースをどこかで聞いたことがあります。該当するJarをApplicationServerのクラスパスに配置し一度しかロードされないようにすることで回避することができると思います。 | ||||||||||||
|
投稿日時: 2004-05-02 15:56
Anthyhime様
返信ありがとうございます。
私もライブラリを使用しているクラスの複数回のロードが怪しいのかなという気はしているのですが、 なぜ、再ロードされるのかがわかりません。考えられる原因としてはどのようなものがあるのでしょうか? あと、該当のJARはApplicationServerのクラスパスに配置しています。。。 |
1