访问Tomcat服务器上的Web应用程序资源时出现NoSuchMethodError

时间:2010-11-24 12:09:56

标签: java tomcat resources jersey

在线搜索后,这是一个我无法找到答案的问题。 我的Web应用程序部署到tomcat服务器,我知道这一切都在作为index.jsp显示文本。但是当我尝试访问我已经创建的资源时应该打印出hello world,tomcat服务器会返回此消息

java.lang.NoSuchMethodError: com.sun.jersey.core.spi.component.ProviderServices.<init>(Lcom/sun/jersey/core/spi/factory/InjectableProviderFactory;Lcom/sun/jersey/core/spi/component/ProviderFactory;Ljava/util/Set;Ljava/util/Set;)V
    com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:450)
    com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:383)
    com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:377)
    com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:242)
    com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:449)
    com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:169)
    com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:281)
    com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:442)
    javax.servlet.GenericServlet.init(GenericServlet.java:212)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    java.lang.Thread.run(Unknown Source)

有没有人有任何想法或线索可以帮助我解决这个问题?

任何帮助非常感谢 谢谢 克里斯

3 个答案:

答案 0 :(得分:3)

我的猜测是你的类路径中存在一些问题。可能在类路径或WEB-INF / lib

中有两种不同版本的球衣

答案 1 :(得分:2)

您必须将以下球衣罐包含在WEB-INF/lib文件夹

  • 球衣 - 服务器 - 1.3.jar
  • ASM-3.1.jar
  • 球衣核-1.3.jar
  • Jersey的客户端 - 1.3.jar

答案 2 :(得分:0)

我认为这是由于&#34; jersey-server&#34;之间的版本差异造成的。和&#34; jersey-core&#34;罐子(也仔细检查你不会在你的WEB-INF / lib文件夹中偶然发现那些不同罐子的重复差异版本。)

在我的情况下,我们已经碰到了我们的泽西 - 客户端版本,它已经碰到了jersey-core版本(依赖项),或类似的东西,而我们调出了一个特定的(较旧的)泽西服务器版本,从而导致了mismatch(old jersey-server 1.0.2,new jersey-core 1.11)。

另外

SEVERE: The provider class, class com.sun.jersey.core.impl.provider.xml.XMLStreamReaderContextProvider, could not be instantiated
Caused by: java.lang.NullPointerException
        at com.sun.jersey.core.impl.provider.xml.TransformerFactoryProvider.<init>(TransformerFactoryProvider.java:57)
        ... 44 more

我也这么认为。

此外,如果jersey-core为1.0.2且jersey-client为1.11,则ProviderServices失败。

修复:让它们全部匹配。