2015-10-23 2 views
0

Я пытаюсь создать сервлет сервлета и загрузить его, и для этого я использую файловую загрузку из Apache. Я бегу мой сервлет на: Версия сервера: Apache Tomcat/5.5.36 Servlet Версия: 2,4 JSP Версия: 2,0Исключение с использованием fileupload на Tomcat5

Я получаю следующее исключение, и я понятия не имею, что делать больше:

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 

Id хотел бы знать, если:

  • есть ли способ, чтобы проверить, что импортированные LIB находятся в нужном месте во время выполнения.

  • Есть ли проблемы с версией моего сервера (Apache Tomcat/5.5.36 Servlet Version: 2.4 JSP Version: 2.0) Некоторая известная проблема, которую я не читал.

  • Идея состоит в том, чтобы использовать только * .class (с определением сервлета внутри WEB-INF/classes), чтобы работать вместе с другими сервлетами, которые у меня есть. Я говорю вам это, потому что, если я развертываю войну с помощью Tomcat Manager, она работает без особых проблем, но внутри моего собственного приложения это терпит неудачу. Может быть, это не импорт libs, как следует.

Любая помощь/идея приветствуется, я перепробовал все предложенные решения на StackOverflow и никто не работал для меня, поэтому я и спрашиваю снова.

Thanks

ответ

2

Наконец-то я получил его. Я работаю с Genexus, а внутри GXClassR.jar (библиотека, используемая Genexus) появился еще один экземпляр того же * .class (довольно старый и устаревший). Я удалил его и оставил только новый, и он сработал.

+0

Спасибо за обмен. Мы обновим или удалим этот класс как можно скорее. –