Pie*_*rre 2 upload jsp apache-commons
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)
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我不明白它,看起来它找不到parseRequest()方法,但ServletFileUpload instanciation工作正常,所以看起来像包在那里但是......
任何的想法?所有建议都有帮助!:)
这确实是阶级污染的标志.您有不同版本的commons fileupload JAR文件遍布类路径.您需要通过删除或替换旧版本的类路径来清理类路径.在一个JSP/Servlet的web应用的情况下,这是由类路径所覆盖的默认路径通常是Webapp/WEB-INF/lib,Webapp/WEB-INF/classes,Appserver/lib和JRE/lib.
也就是说,堆栈跟踪还表明您使用旧式scriptlet在JSP文件中编写了原始Java代码.我强烈建议不要这样做,但只是使用一个真正的Java类(在本例中是一个Servlet)来处理文件上传.
| 归档时间: |
|
| 查看次数: |
14698 次 |
| 最近记录: |