【问题标题】:NoSuchMethodError when using jersey 2.0使用球衣 2.0 时出现 NoSuchMethodError
【发布时间】:2014-09-18 23:48:39
【问题描述】:

我使用的是 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)

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

我想我正在使用的罐子有些问题,但我不知道缺少什么。 我没有使用 maven,所以我直接使用罐子。

另外,我在我的app中也实现了一个过滤器(ContainerResponseFilter),可能和异常有关系,我不知道。

【问题讨论】:

  • 看我的回答here

标签: java rest servlets jersey-2.0


【解决方案1】:

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

【讨论】:

  • 你知道我应该使用哪个版本吗?尝试删除我拥有的每个版本,但仍然出现错误(我上面提到的那个或这个:java.lang.NoClassDefFoundError: com/google/common/base/Function)。
  • 似乎您使用了 2 个依赖项,每个依赖项都需要特定版本的 google 集合,而该集合与另一个不兼容。解决这个问题要么是不可能的,要么是很难做到的,所以我不能在这里帮你。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2014-06-28
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    • 2018-10-19
    • 2012-01-05
    • 1970-01-01
    相关资源
    最近更新 更多