使用jersey 2.0时的NoSuchMethodError

时间:2014-07-27 18:34:28

标签: java rest servlets jersey-2.0

我正在使用jersey 2.0,在执行请求时,我遇到以下异常:

SEVERE: StandardWrapper.Throwable
java.lang.NoSuchMethodError: com.google.common.collect.Sets.newIdentityHashSet()Ljava/util/Set;
    at org.glassfish.jersey.model.internal.CommonConfig.<init>(CommonConfig.java:215)
    at org.glassfish.jersey.server.ResourceConfig$State.<init>(ResourceConfig.java:107)
    at org.glassfish.jersey.server.ResourceConfig.<init>(ResourceConfig.java:338)
    at org.glassfish.jersey.servlet.WebComponent.createResourceConfig(WebComponent.java:373)
    at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:259)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:167)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:349)
    at javax.servlet.GenericServlet.init(GenericServlet.java:160)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:865)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:136)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

这些是我正在使用的罐子:

enter image description here

我想我正在使用的罐子有些问题,但我无法弄清楚缺少什么。 我没有使用maven所以我直接消费了罐子。

另外,我还在我的应用程序中实现了一个过滤器(ContainerResponseFilter),也许它与异常有关,我不知道。

2 个答案:

答案 0 :(得分:1)

这可能是由您的依赖项中不同的,不兼容的Google Collections版本(现在是Guava的一部分)引起的。 Jersey库是针对此版本的一个版本编译的,现在在运行时期间首先加载它的不同版本。 尝试从依赖项中排除google-collections或guava-collections之一。

答案 1 :(得分:0)

我解决了这个问题。基本上我的罐子可能不匹配。 This回答帮助了我们很多。你可以在那里找到所有必需的罐子的清单。我有完全相同的列表,它正在工作。