首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Tomcat5上使用fileupload的异常

在Tomcat5上使用fileupload的异常
EN

Stack Overflow用户
提问于 2015-10-23 19:28:35
回答 1查看 175关注 0票数 0

我正在尝试开发和上传servlet,并为此使用Apache的fileupload库。我正在运行servlet :服务器版本: Apache /5.5.36 Servlet版本:2.4JSP版本: 2.0

我得到了下一个例外,我不知道还能做什么:

代码语言:javascript
复制
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)

这似乎是进口的麻烦,但我不确定。

这是我用来做这个的代码:

代码语言:javascript
复制
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放在了正确的位置:

代码语言:javascript
复制
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

我想知道是否:

  • 有任何方法可以检查导入的lib是否在运行时的正确位置。
  • 我的服务器版本(Apache /5.5.36 Servlet版本:2.4JSP版本: 2.0)是否有问题?
  • 其想法是只使用*.class (WEB/类中的servlet定义)来与我拥有的其他servlet一起工作。我告诉您这一点,因为如果我使用部署war,它可以正常工作,但是在我自己的应用程序中它会失败。也许它不是像它应该的那样进口利伯斯。

任何帮助/想法都是受欢迎的,我尝试过在StackOverflow上提出的所有解决方案,但没有人为我工作,所以我再问一次。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-10-23 20:38:58

我终于明白了。我使用Genexus,在GXClassR.jar (Genexus使用的库)中有同一个*.class的另一个实例(显然是旧的和过时的)。我删除了它,只留下了新的,它起了作用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33310051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档