- - PR -
jakarta commonsのFile Uploadについて
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-09-28 17:48
jakarta commonsのFile Uploadモジュールを使用してファイルのアップロードプログラムを作成しております。
Windows環境では、実行できたのですが、 Linux環境(Tomcat/4.1.24)で実行すると、エラーとなってしまいます。 <<クラスパスの設定>> /usr/local/jakarta-tomcat/common/lib/commons-fileupload-1.0.jar /usr/local/jakarta-tomcat/common/lib/commons-beanutils.jar ソースでエラーになると思われる部分: DiskFileUpload upload = new DiskFileUpload(); エラー内容: <<Ldescription>> The server encountered an internal error () that prevented it from fulfilling this request. <<exception>> javax.servlet.ServletException: サーブレットの実行により例外を投げました at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) ... <<root cause>> java.lang.NoClassDefFoundError: javax/servlet/ServletInputStream at FileUploadServlet.doPost(FileUploadServlet.java:24) at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) ... | ||||
|
投稿日時: 2004-09-28 17:53
実行時にクラスがみつからないだけではないでしょうか。
tomcat のcommon/libの下あたりに該当のjarはありますか? | ||||
|
投稿日時: 2004-09-28 18:01
早速の回答有難うございます。
該当のJARはあります。 入れてあるのでコンパイルは通りまして実行の際に「java.lang.NoClassDefFoundError: javax/servlet/ServletInputStream」が出たのです。 おかしいのは。。。 WINDPWS XPでは動いてたけどLINUXでは「DiskFileUpload 」クラスを生成する時に例外が発生します。 なぜなんでしょうね。 T.T ご教授よろしくお願いします。 | ||||
|
投稿日時: 2004-09-28 18:22
あいつーです。
コンパイル時のビルドパスには入っていて、 実行時のクラスパスには入っていない、というオチはありえませんか? | ||||
|
投稿日時: 2004-09-28 19:41
自分もそういう意味で書きました。だから、該当のjarがtomcatからみえるところにあるかと聞いたのですが。 | ||||
|
投稿日時: 2004-09-29 00:42
見つからない、といっているのはServlet APIの標準クラスなので、普通はありえないエラー
だと思うのですが。そのサーブレットを実行しているWebアプリケーションの構成はどうなって いるのでしょうか。 | ||||
|
投稿日時: 2004-09-29 01:30
関連するライブラリを jre/lib/ext に配置していると言うことはないでしょうか?
そうすると上位のクラスローダで読み込まれてしまうため、サーブレット関連のライブラリを読み込んでいるクラスローダを参照できなくなります。 該当するようであればWeb アプリケーションで利用するライブラリは WEB-INF/lib に配置することで解決すると思います。 | ||||
|
投稿日時: 2004-09-29 09:45
ご回答ありがとうございます。
確かにextの中にも入れてみました。クラスパスにも設定してあっちこっち入れてみました。 でもWindowsXPで実行の時は面倒でextに入れてCLASSPATHには設定してませんがOKでした。 Linuxはだめでしょうか。 一応extのjarを消してもう一度やってみます。 ちなみに「コンパイル時のビルドパスには入っていて、 実行時のクラスパスには入っていない」っていうことはどういう意味ですか。 コンパイル時に参照するクラスパスと実行の際参照するクラスパスは違うのでしょうか。 今回のエラーはservlet.jarの中のServletInputStreamっていうクラスがないというエラーです。 すると他にもServletInputStreamクラスを使うservletがあればエラーになりますね。 ばかげな質問で申し訳ありません。 よろしくお願いします。 | ||||
