3

我在这里看到了许多与此异常相关的问题,其中大多数问题都通过"commons-file-upload"从 apache 添加一个 jar 来解决。我尝试使用此解决方案,并为我的所有项目添加了相同版本的 jar,但它似乎无法解决问题,我仍然面临问题。我知道这个问题已经被问过了,但我想知道是否有人可以帮我解决这个具体问题。这是我的堆栈跟踪:

java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getParts()Ljava/util/Collection;
    at fr.synomia.v4.ws.remotelayer.ws.rest.RESTServer.getParameters(RESTServer.java:378)
    at fr.synomia.v4.ws.remotelayer.ws.rest.RESTServer.parseURLRequest(RESTServer.java:367)
    at fr.synomia.v4.ws.remotelayer.ws.rest.RESTServer.access$0(RESTServer.java:354)
    at fr.synomia.v4.ws.remotelayer.ws.rest.RESTServer$1.handle(RESTServer.java:67)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
    at org.eclipse.jetty.server.Server.handle(Server.java:346)
    at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:442)
    at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:924)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:582)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:218)
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:51)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:586)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:44)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)
    at java.lang.Thread.run(Thread.java:662)

当我使用 调用getParts我的类RestServer中的方法时抛出异常HttpServletRequest,我一直在寻找信息,它说所有项目使用的 jar 版本必须相同,我这样做了,但没有工作。

一段代码调用getParts()

private Map<String,Object> getParameters(HttpServletRequest request,boolean jsonp, String callback) {
        Map<String,Object> lsParameteres = new HashMap<String, Object>();       
            Collection<Part> parts = null;
            try {
                parts = request.getParts();//The exception begins here!

如果有人可以帮助我,我将不胜感激,感谢您的时间。此致。

4

2 回答 2

8

javax.servlet.http.HttpServletRequest.getParts()仅从 Servlet API 3.0 开始可用

检查事项:

  • 确保您正在运行 Jetty 9(或更新版本)
  • 确保您已WEB-INF/web.xml配置为使用 Servlet API 3.0(或更新版本)
  • 确保您的构建工具使用的是 servlet-api 3.1(或更新版本)jar。
  • (可选)确保您的WEB-INF/lib目录中有相同的 servlet api 3.1 jar。
于 2013-05-02T17:09:51.563 回答
0

我遇到了同样的问题。当我切换到Tomcat 6时发生了这种情况。当我切换回Tomcat 7时,问题就消失了。

于 2016-09-06T14:21:27.683 回答