Jersey Startup Issue:java.lang.NoSuchMethodError:com.google.common.collect.Sets.newIdentityHashSet()

时间:2015-10-15 07:56:16

标签: java rest jersey guava weblogic12c

我正在使用Jersey 2.5.1。我的.war文件打包在我的.ear文件中。在.war模块的WEB-INF \ lib文件夹中,我有guava-14.0.1.jar。 jersey-common-2.5.1.jar依赖番石榴。

外面,在ear / lib文件夹中我有另一个番石榴罐 - >我的项目需要guava-17.0。

这两个jar都有newIdentityHashSet()方法,但我仍面临以下错误:

  

java.lang.NoSuchMethodError:com.google.common.collect.Sets.newIdentityHashSet()Ljava / util / Set;           在org.glassfish.jersey.model.internal.CommonConfig。(CommonConfig.java:220)           在org.glassfish.jersey.server.ResourceConfig $ State。(ResourceConfig.java:110)           在org.glassfish.jersey.server.ResourceConfig。(ResourceConfig.java:351)           在org.glassfish.jersey.servlet.WebComponent.createResourceConfig(WebComponent.java:444)           在org.glassfish.jersey.servlet.WebComponent。(WebComponent.java:302)           截断。请参阅日志文件以获取完整的堆栈跟踪

我试过去掉一个番石榴罐子,但错误是一样的。我试过在这两个地方保持相同的版本。但是没有用。

我正在使用Weblogic 12C进行部署。

对此的任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

将重复的jar文件放入同一个ear / war文件中并不是一个好主意。因为会出现此类错误。最佳做法是只有一个版本的库。

话虽如此,您可以检查在哪里尝试加载没有该方法的类:

检查从哪个jar文件加载特定类的一种方法是将参数: -verbose:class 设置为JRE。

这将为您提供有关此类加载问题的提示。

此外,WLS捆绑了类加载器分析工具(CAT),可帮助您识别重复的jar文件(冲突等)。