2012-05-25 15 views
6

Neden bu hatayı çalışma zamanında alıyorum? Jetty'de bir AsyncServlet'i dağıtmaya çalışıyorum.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) 

benim 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

Bu sorunu çözdünüz mü? Aynı konuya koşuyorum ve bunu düzeltip düzeltemeyeceğinizi merak ediyorum. – Dawood

+0

Sorunu buldum. CLASSPATH'da geromino-servlet_2.5_spec-1.1.2'den servlet apis ile bir çatışma oldu. –

cevap

8

Ben sunucu Servlet spec yanlış sürümünü kullanıyor tahmin ediyorum aşağıdaki Maven bağımlılıkları var. AsyncContext sadece Servlet spec v 3.0'dan beri kullanılabilir. Muhtemelen geliştirme ortamınızda doğru sürüme sahip olursunuz, ancak sunucunuz api'nin eski bir sürümünü kullanır, dolayısıyla çalışma zamanında hata.

+0

Bunu nasıl hata edebilirim. Maven'i kullanıyorum ve bunun hem geliştirme hem de çalışma zamanı bağımlılıkları ile ilgilenmesi gerektiğini düşündüm. –

+0

maven, iyi bilgi vermeniz gerekiyor ...> mvn -X kurulumunu kullanmayı deneyin ve bu size bağımlılık ağacını vermeli, 2.5'ten başka bir yerden geçiş yapıyor olabilirsiniz, bu durumda sadece bir dışlama eklemeniz gerekir –

+0

teşekkürler. Çoğalmaları bulmak için eklenti kullandım ve bunları bir dışlama ile değiştirdim. com.ning.maven.plugins maven-duplicate-finder-plugin. Ancak, bu hala benim problemimi çözmedi. –

İlgili konular