【问题标题】:Exception while accessing Jersey REST webservice访问 Jersey REST Web 服务时出现异常
【发布时间】:2012-01-10 14:54:22
【问题描述】:

我正在尝试让 REST Web 服务在我的应用程序中运行。我正在使用带有 Spring 2.5 的球衣。 Web 服务的端点是用 enunciate 1.9 生成的。当我使用 Tomcat 部署生成的 war 文件并访问 REST Web 服务时,出现以下异常:

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 日志中提供了根本原因的完整堆栈跟踪。

我的 REST servlet 部分的web.xml 如下所示:

<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>

我需要在配置中修复什么,才能解决问题吗?

【问题讨论】:

    标签: java spring rest jersey enunciate


    【解决方案1】:

    java.lang.NoSuchMethodError: 在类路径中有错误版本的类/Jar(可能是较新版本/较旧版本)文件时发生。确保类路径中的 jar 是受支持的版本。

    【讨论】:

      【解决方案2】:

      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章)

      你在类路径中的 asm 是否符合 Jersey 的需要?

      试试看

      【讨论】:

        【解决方案3】:

        这也可能是因为您的构建路径中有重复的 jar。如果您使用的是 Maven ,我建议您做一个 dependency:tree 以确定是否有任何重复项。同时打开您的 .classpath 文件并检查构建路径问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-01-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-12
          • 2012-11-26
          相关资源
          最近更新 更多