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

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

java.lang.NoSuchMethodError: com.sun.jersey.core.spi.component.ProviderServices.(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) 

是否有任何人有任何想法或线索,为什么这将发生,这将有助于我解决这个问题?

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

我的猜测是你的类路径中存在一些问题。 也许,您可能在类路径或WEB-INF / lib中有两个不同版本的jersey

您必须在WEB-INF/lib文件夹中包含以下jerseyjar

  • 新泽西服务器1.3.jar
  • ASM-3.1.jar
  • jersey核心 – 1.3.jar
  • 新泽西州的客户 – 1.3.jar

我相信这是由于“jersey-server”和“jersey-core”jar子之间的版本差异引起的(同样要仔细检查你不会在WEB-INF / lib文件夹中偶然发现那些不同jar子的重复差异版本)。

在我的情况下,我们已经碰到了我们的泽西 – 客户端版本,它已经碰到了jersey核心版本(一个依赖),或类似的东西,而我们称出一个特定的(较旧的)泽西服务器版本,从而导致不匹配(旧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.(TransformerFactoryProvider.java:57) ... 44 more 

我想也一样。

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

修复:让它们全部匹配。