Jsp Apache commons->;文件上载->;parseRequest()错误
Apache在尝试上载文件时返回此错误(我只保留stacktrace的第一行和根本原因): 这是我的密码:Jsp Apache commons->;文件上载->;parseRequest()错误,jsp,upload,apache-commons,Jsp,Upload,Apache Commons,Apache在尝试上载文件时返回此错误(我只保留stacktrace的第一行和根本原因): 这是我的密码: if(ServletFileUpload.isMultipartContent(request)){ FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); List items = null; tr
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);
}
}
我不明白,它看起来找不到parseRequest()方法,但是ServletFileUpload实例工作正常,所以看起来包在那里,但是
有什么想法吗?
感谢您的所有建议!:) noSuchMethod错误可能是由编译所依据的jar版本与运行时类路径中的jar版本不匹配引起的。这需要仔细检查。这确实是类路径污染的迹象。在类路径上分布着不同版本的commons fileupload JAR文件。您需要通过删除或替换旧版本的类路径来清理类路径。对于JSP/Servlet WEB应用程序,类路径覆盖的默认路径通常是
Webapp/WEB-INF/lib
,Webapp/WEB-INF/classes
,Appserver/lib
和JRE/lib
也就是说,stacktrace还指示您使用JSP文件在JSP文件中编写了原始Java代码。我强烈建议不要这样做,而只是使用一个真正的Java类(在本例中是Servlet)来处理文件上载。您是对的,commons上载的旧版本在tomcat lib文件夹中。你也是对的,我不应该这样编码,但在这种情况下,我只需要添加一个小的进程到现有的平台使用他们的api,它只有一个页面,所以。。。我没有费心,但你是对的,错了:)
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);
}
}