2015-10-23 11 views
0

我正在嘗試開發和上傳servlet,爲此我使用Apache的fileupload librery。我跑在我的servlet:服務器版本:的Apache Tomcat/36年5月5日 Servlet版本:2.4 JSP版本:2.0在Tomcat5上使用fileupload的異常

,我發現了一個異常,我不知道該怎麼做的更多:

java.lang.NoSuchMethodError: org.apache.commons.fileupload.FileUploadBase.isMultipartContent(Lorg/apache/commons/fileupload/RequestContext;)Z 
org.apache.commons.fileupload.servlet.ServletFileUpload.isMultipartContent(ServletFileUpload.java:71) 
photoUploader.processRequest(photoUploader.java:48) 
photoUploader.doPost(photoUploader.java:87) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 

這似乎是進口的麻煩,但我不確定。

這是我使用這樣做代碼:

import java.io.File; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.util.List; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import org.apache.commons.fileupload.FileItem; 
import org.apache.commons.fileupload.FileUploadException; 
import org.apache.commons.fileupload.disk.DiskFileItemFactory; 
import org.apache.commons.fileupload.servlet.ServletFileUpload; 

public class photoUploader extends HttpServlet { 

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     response.setContentType("text/html;charset=UTF-8"); 

     final String RUTA_LOCAL_APP = getServletContext().getRealPath("/"); 
     out.println("<!DOCTYPE html>"); 
      out.println("<html>"); 
      out.println("<head>"); 
      out.println("<title>Servlet photoUploader</title>");    
      out.println("</head>"); 
      out.println("<body>"); 
      out.println("<h1>Servlet photoUploader at " + request.getContextPath() + "</h1>"); 
      out.println("<h5>Versiones del Servlet: M->" + getServletContext().getMajorVersion() + 
         "| m->" + getServletContext().getMinorVersion() + "</h5>"); 
      out.println("<h5>Adjunta MultipartContent?: " + ServletFileUpload.isMultipartContent(request) + "</h5>"); 
      } 
     catch(Exception e) 
     { 
      out.println("<h3>Excepción: </h3>" + e.getMessage()); 
     } 
     finally{ 
      out.println("</body>"); 
      out.println("</html>"); 
     } 
    } 

當我檢查,如果isMultipartContent out.println("<h5>Adjunta MultipartContent?: " + ServletFileUpload.isMultipartContent(request) + "</h5>");是,當我得到的錯誤。

我敢肯定,我得的* .jar在正確的地方:

Webapp Content: 
├───CSS 
│  Stuff 
│ 
├───JS 
│ │ jquery-1.11.2.js 
│ │ 
│ └───jquery-ui 
│  │ Stuff 
│  │ 
│  ├───external 
│  │ └───Stuff 
│  │ 
│  └───images 
│    Stuff 
│ 
├───META-INF 
│  MANIFEST.MF 
│ 
├───static 
│ │ Stuff 
│ │ 
│ └───imagenes 
│   Stuff 
│ 
└───WEB-INF 
    │ web.xml 
    │ 
    ├───classes 
    │  photoUploader.class 
    │  
    │ 
    └───lib 
      commons-fileupload-1.3.1.jar 
      commons-io-2.4.jar 
      GXClassR.jar 
      iText.jar 
      mysql-connector-java-3.1.13-bin.jar 
      poi.jar 

我想知道,如果:

  • 有什麼辦法來檢查進口11b是在正確的地方在運行時。

  • 是否有任何與我的服務器版本(Apache Tomcat/5.5.36 Servlet版本:2.4 JSP版本:2.0)有任何問題我還沒有讀過一些已知的問題。

  • 這個想法是隻使用* .class(在WEB-INF/classes內部使用servlet定義)與其他servlet一起使用。我告訴你這一點,因爲如果我使用Tomcat Manager部署戰爭,它沒有任何問題,但在我自己的應用程序中失敗。可能是因爲它不應該導入庫。

任何幫助/想法是值得歡迎的,我試過建議在計算器上的所有解決方案,併爲我沒有一個工作,所以我再次問。

謝謝

回答

2

最後我明白了。我與Genexus合作,並在GXClassR.jar(Genexus使用的庫)內部存在另一個相同* .class(實際上比較陳舊且過時)的實例。我刪除它,只留下新的一個,它的工作。

+0

感謝您的分享。我們將盡快更新或刪除該課程。 –