- - PR -
jakarta commonsのFile Uploadについて
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-09-30 02:11
>すると他にもServletInputStreamクラスを使うservletがあればエラーになりますね。
そのサーブレットが WEB-INF/classes または lib に入っていればエラーにはなりません。 クラスローダは以下のように階層構造になっています。
#Tomcatのアーキテクチャには明るくないので不正確かもしれません この階層構造のなかで、子クラスローダで読み込まれたクラスから、親のクラスは参照できるのですが、逆はだめです。 よって commons-fileupload-1.0.jar などが lib/ext に入っていると Tomcat のクラスローダで読み込まれている servlet.jar を参照できず NoClassDefFoundError となるのです。 lib/ext にどかどかライブラリを置けばコンパイルなどは一瞬楽ですが様々なトラブルを引き起こしますのでおすすめいたしません。 [ メッセージ編集済み 編集者: インギ 編集日時 2004-09-30 03:39 ] | ||||||||
|
投稿日時: 2004-09-30 11:32
インギ様
ありがとうございます。 EXTに「upload.jar」を入れたのは同様のエラーがおきて色々試してみたんですが いまだに良く解らないです。 T.T servlet.jar が参照できなかったのならどうしてServletInputStreamだけできないんでしょう。 サーブレット自体が動いちゃいけないんじゃないでしょうか。 いつもこんな質問で申し訳ありませんがよろしくお願いします。 | ||||||||
|
投稿日時: 2004-09-30 12:09
混乱されているようですが、インギさんの書き込みをよーく読んで理解してください。 クラスがどこにロードされているかによって、たとえ普通なら参照できるはずのクラスでも、 参照できないことがあるのです。 それから、
エラーが起きている場所は、どのように特定されたのでしょうか。 スタックトレースの出力とこの説明が合ってないように思うのですが。 | ||||||||
|
投稿日時: 2004-09-30 17:45
linux環境で動きました。
「source /etc/profile」とコマンドを実行したのですが、どうやら、うまく クラスパスが反映されなかったのが原因みたいです。サーバを再起動したら動きました。 ありがとうございました。 |