2012-01-10 103 views
1

我正在嘗試讓REST webservices在我的應用中工作。我在Spring 2.5上使用球衣。通過聲明1.9生成Web服務的端點。當我部署在Tomcat中生成WAR文件並訪問REST Web服務我得到以下異常:訪問Jersey REST webservice時出現異常

javax.servlet.ServletException: Servlet.init() for servlet jersey threw exception 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291) 
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:877) 
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:594) 
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1675) 
java.lang.Thread.run(Thread.java:662) 

根源:

java.lang.NoSuchMethodError: org.objectweb.asm.ClassReader.accept(Lorg/objectweb/asm/ClassVisitor;I)V 
com.sun.jersey.impl.container.config.AnnotatedClassScanner.analyzeClassFile(AnnotatedClassScanner.java:267) 
com.sun.jersey.impl.container.config.AnnotatedClassScanner.indexJar(AnnotatedClassScanner.java:229) 
com.sun.jersey.impl.container.config.AnnotatedClassScanner.indexJar(AnnotatedClassScanner.java:218) 
com.sun.jersey.impl.container.config.AnnotatedClassScanner.indexDir(AnnotatedClassScanner.java:210) 
com.sun.jersey.impl.container.config.AnnotatedClassScanner.index(AnnotatedClassScanner.java:169) 
com.sun.jersey.impl.container.config.AnnotatedClassScanner.scan(AnnotatedClassScanner.java:105) 
com.sun.jersey.api.core.ClasspathResourceConfig.init(ClasspathResourceConfig.java:131) 
com.sun.jersey.api.core.ClasspathResourceConfig.<init>(ClasspathResourceConfig.java:103) 
com.sun.jersey.api.core.ClasspathResourceConfig.<init>(ClasspathResourceConfig.java:85) 
com.sun.jersey.spi.container.servlet.ServletContainer.createResourceConfig(ServletContainer.java:395) 
com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:194) 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291) 
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:877) 
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:594) 
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1675) 
java.lang.Thread.run(Thread.java:662) 

注根源的完整堆棧跟蹤是可用Apache Tomcat/6.0.33日誌。

web.xml爲REST servlet的部分看起來像這樣:

<servlet> 
<servlet-name>jersey</servlet-name> 
<servlet-class>org.codehaus.enunciate.modules.jersey.EnunciateSpringServlet</servlet-class> 
<init-param> 
    <param-name>org.codehaus.enunciate.modules.jersey.config.ServletPath</param-name> 
    <param-value>/rest</param-value> 

</init-param> 

有什麼我需要在這裏修復的配置,可以解決這個問題?

回答

1

java.lang.NoSuchMethodError:org.objectweb.asm.ClassReader.accept(Lorg /對象式/ ASM/ClassVisitor;我)V com.sun.jersey.impl.container.config.AnnotatedClassScanner.analyzeClassFile(AnnotatedClassScanner.java :267)

在類路徑匹配澤西島需要你的asm嗎?

嘗試檢查

2

java.lang.NoSuchMethodError:發生時,你有類/罐的錯誤版本(可能是較新的版本/舊版本)在類路徑文件。確保你在classpath中的jar是支持的版本。

0

這也可能是因爲構建路徑中有重複的jar。如果您使用的是Maven,我建議您執行一個依賴項:tree來確定是否有重複項。同時打開你的.classpath文件並檢查構建路徑問題。