【问题标题】:"java.lang.NoSuchMethodError: org.apache.commons.fileupload.FileUploadBase.isMultipart" pls help me to solve this exception“java.lang.NoSuchMethodError: org.apache.commons.fileupload.FileUploadBase.isMultipart”请帮我解决这个异常
【发布时间】:2013-12-29 05:38:04
【问题描述】:

HTTP 状态 500 -

输入Exception报告

留言

描述服务器遇到了一个内部错误(),导致它无法完成这个请求。

例外:

javax.servlet.ServletException: Servlet execution threw an exception
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

根本原因:

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)
WindsofChange.User_FileEncrypt.doPost(User_FileEncrypt.java:50)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

注意 Apache Tomcat/7.0.14 日志中提供了根本原因的完整堆栈跟踪。

Apache Tomcat/7.0.14

这是我的代码:

public class ServletDemo extends HttpServlet {
private static final byte[] initialization_vector = { 22, 33, 11, 44, 55, 99, 66, 77 };
File encryptedPath, uploadedFile;
String fileName;



@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);  
     response.setContentType("text/html");  
      PrintWriter out = response.getWriter();  
    if (isMultipart) {  
       // Create a factory for disk-based file items  
       FileItemFactory factory = new DiskFileItemFactory();  
       // Create a new file upload handler  
       ServletFileUpload upload = new ServletFileUpload(factory);  
      try {  
         // Parse the request  
         List /* FileItem */ items = upload.parseRequest(request);  
        Iterator iterator = items.iterator();  
        while (iterator.hasNext()) {  
          FileItem item = (FileItem) iterator.next();
          //filesize=item.getSize(); get filesize in bytes
          if (!item.isFormField())  
           {  
            fileName = item.getName();
            String root = getServletContext().getRealPath("/");
            File path = new File(root + "/uploads");  
            //if uploads folder not exists create
            if (!path.exists())  
             {  
              boolean status = path.mkdirs();  
             }  
            uploadedFile = new File(path + "/" + fileName);
            encryptedPath = new File(path + "/encrypted" + fileName);
            out.println(uploadedFile.getAbsolutePath()); 
            try{
             if(fileName!="")  
            item.write(uploadedFile);  
             else  
               out.println("file not found");  
            }catch(Exception e){}
             out.println("File Uploaded Successfully....:-)");  
          }  
           else  
           {  
             String abc = item.getString();  
           }

        }
        }catch(Exception e){e.printStackTrace();}

       }  
     else  
     {  
       out.println("Not Multipart");  
     }
  } 

}

【问题讨论】:

  • 之前我运行的代码相同。但现在它抛出了上述异常。有什么我想改变的吗?
  • 什么代码在哪里?
  • 您需要将commons-fileupload jar 复制到您的WEB-INF/lib/ 目录,然后重新启动服务器。
  • @яша 我更新了我的代码
  • @GauravSharma 我已经做过那件事了。早些时候它运作良好。但现在它抛出异常。我没有任何改变。

标签: java tomcat servlets file-upload nosuchmethoderror


【解决方案1】:

我认为问题与您的代码无关。可能是问题的原因是 Jar。 调整类加载顺序,即可解决问题。

【讨论】:

  • 你的IDE是Eclipse,Server是Tomcat吗?
  • 是的。我用“FileUpload”替换了“ServletFileUpload”,现在我的代码运行没有异常。
猜你喜欢
  • 2023-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-27
  • 1970-01-01
  • 2019-05-22
  • 2022-11-26
相关资源
最近更新 更多