2012-05-25 21 views
6

¿Alguna idea de por qué recibo este error en tiempo de ejecución? Estoy tratando de implementar un AsyncServlet en Jetty.java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.startAsync

java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.startAsync(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)Ljavax/servlet/AsyncContext; 
     at my.server.SlowServlet.doGet(SlowServlet.java:16) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:705) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:814) 
     at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:547) 
     at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:480) 
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119) 
     at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:520) 
     at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227) 
     at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:941) 
     at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:409) 
     at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186) 
     at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:875) 
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) 
     at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250) 
     at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149) 
     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110) 
     at org.eclipse.jetty.server.Server.handle(Server.java:345) 
     at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:441) 
     at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:919) 
     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:680) 

tengo las siguientes dependencias de Maven en mi pom.xml

<dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-server</artifactId> 
     <version>${jettyVersion}</version> 
    </dependency> 


    <dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-servlet</artifactId> 
     <version>${jettyVersion}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-servlets</artifactId> 
     <version>${jettyVersion}</version> 
    </dependency> 


    <dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-webapp</artifactId> 
     <version>${jettyVersion}</version> 
    </dependency>  
+2

¿Pudo resolver este problema? Me estoy encontrando con el mismo problema y me preguntaba si pudiste arreglarlo. – Dawood

+0

Encontré el problema. Hubo un conflicto en mi CLASSPATH con servlet apis de geromino-servlet_2.5_spec-1.1.2. –

Respuesta

8

supongo que su servidor está utilizando la versión incorrecta de la especificación Servlet. AsyncContext solo está disponible desde Servlet spec v 3.0. Probablemente tenga la versión correcta en su entorno de desarrollo, pero su servidor utiliza una versión desactualizada de la API, de ahí el error en tiempo de ejecución.

+0

Alguna idea de cómo puedo depurar esto. Estoy usando Maven y pensé que debería ocuparse de las dependencias tanto de desarrollo como de tiempo de ejecución. –

+0

maven, tiene que darle buena información ... intente usar> mvn -X install y eso debería darle el árbol de dependencias, podría obtener 2.5 transitively de algún lugar, en cuyo caso solo necesita agregar una exclusión –

+0

gracias. Usé el complemento para encontrar los duplicados y los reemplacé con una exclusión. com.ning.maven.plugins maven-duplicate-finder-plugin. Sin embargo, eso aún no resolvió mi problema. –

Cuestiones relacionadas