2013-05-02 2 views
3

Я видел много проблем, связанных с этим исключением здесь, и большинство из них решаются путем добавления банкомата "commons-file-upload" из apache. Я попытался использовать это решение, и я добавил ту же версию jar для всех моих проектов, но, похоже, это не проблема, я все еще сталкиваюсь с этой проблемой. Я знаю, что этот вопрос уже задан, но мне интересно, может ли кто-нибудь дать мне руку с этой конкретной проблемой. Это мой StackTrace:Облицовка java.lang.NoSuchMethodError: HttpServletRequest.getParts() Ljava/util/Collection

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, я искал информацию, и это говорит о том, что версия баночке используется должна быть такой же для всех проектов, и я сделал это таким образом, но не работал.

Кусок кода вызова на 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! 

Я буду признателен, если кто-то может мне помочь, спасибо за ваше время. С наилучшими пожеланиями.

ответ

8

javax.servlet.http.HttpServletRequest.getParts() доступна только начиная с Servlet API 3.0

Вещи, чтобы проверить:

  • Убедитесь, что вы работаете Jetty 9 (или новее)
  • Убедитесь, что ваш WEB-INF/web.xml настроен на использование Servlet API 3.0 (или новее)
  • Убедитесь, что ваш инструмент сборки использует сервлеты-api 3.1 (или более новые) банки.
  • (необязательно) Убедитесь, что у вас есть тот же самый сервлет api 3.1 jar в каталоге WEB-INF/lib.
+0

Спасибо за быстрый ответ, я проверю его сейчас. –

+0

Я проверил все упомянутые вами вопросы, но все они в порядке, servlet-api-3.0, а также jetty v8 включены, но не работают. –

+0

Двойная проверка вашей сборки и 'WEB-INF/lib', вероятно, в вашем каталоге' WEB-INF/lib' (или в вашем пути сборки, если eclipse или дерево зависимостей, если maven), у вас, вероятно, более 1 aplet-файл сервлета, один из которых является более старой несовместимой версией. –

0

Я столкнулся с той же проблемой. Это случилось, когда я переключился на Tomcat 6. Когда я переключился на Tomcat 7, проблема исчезла.

Смежные вопросы