Я пытаюсь создать сервлет сервлета и загрузить его, и для этого я использую файловую загрузку из 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
Спасибо за обмен. Мы обновим или удалим этот класс как можно скорее. –