2

ファイルをアップロードしようとすると、Apache がこのエラーを返します (私はスタック トレースの最初の行と根本的な原因のみを保持しました)。

HTTP Status 500 - 
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Exception in JSP: /upload.jsp:40

    37:      
    38:        try {
    39: 
    40:            items = upload.parseRequest(request);
    41:        } catch (FileUploadException e) {
    42:            out.println(e);
    43:        }

Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:451)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

root cause

javax.servlet.ServletException: org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(Lorg/apache/commons/fileupload/RequestContext;)Ljava/util/List;

root cause

java.lang.NoSuchMethodError: org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(Lorg/apache/commons/fileupload/RequestContext;)Ljava/util/List;
    org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)

これが私のコードです:

if(ServletFileUpload.isMultipartContent(request)){
 FileItemFactory factory = new DiskFileItemFactory();
   ServletFileUpload upload = new ServletFileUpload(factory);
   List items = null;


   try {

       items = upload.parseRequest(request);
   } catch (FileUploadException e) {
       out.println(e);
   }
}

私はそれを理解していません。

何か案が?すべての提案は大歓迎です!:)

4

2 に答える 2

6

これは確かにクラスパス汚染の兆候です。クラスパス全体に広がるcommonsfileuploadJARファイルのさまざまなバージョンがあります。古いバージョンのクラスパスを削除または置換して、クラスパスをクリーンアップする必要があります。JSP /サーブレットWebアプリケーションの場合、クラスパスでカバーされるデフォルトのパスは通常、、、Webapp/WEB-INF/libおよびです。Webapp/WEB-INF/classesAppserver/libJRE/lib

とはいえ、スタックトレースは、昔ながらのスクリプトレットを使用して、JSPファイル内に生のJavaコードを記述したことも示しています。そうしないことを強くお勧めしますが、ファイルのアップロードを処理するために実際のJavaクラス(この場合はサーブレット)を使用するだけです。

于 2010-01-28T11:32:37.547 に答える
0

noSuchMethodエラーは、コンパイルしたjarのバージョンとランタイムクラスパスのjarの不一致が原因で発生する可能性があります。これは再確認する必要があります。

于 2010-01-28T09:50:19.990 に答える