如何处理类路径冲突

sly*_*7_7 8 java glassfish guava glassfish-embedded

在我的项目中,我正在使用glassfish-embedded 3.1.1和番石榴lib ...问题是glassfish附带了番石榴的旧实现(即google-collections)......

这会在运行时导致NoSuchMethodError,例如在使用稍后在guava中引入的Lists.reverse()或Sets.newIdentityHashSet()时.

我找不到任何解决方案来解决这个问题...(唯一一个是手动删除glassfish jar中的com/google类目录...)

Ara*_*ram 6

你可以克服这个,具体说明如下.阅读" 类加载器"一章的" 委派"部分.

<class-loader delegate="false" />
Run Code Online (Sandbox Code Playgroud)

检查这篇SO帖子,了解Java EE应用程序中的类加载:Java EE类加载标准


Kev*_*ion 4

Glassfish 永远不应该在自己的 jar 中包含 com.google 类。那是一个错误。

更新[@sly7_7]:看来 glassfish 不再在自己的罐子中包含番石榴,但它取决于番石榴工件。这应该可以解决问题。感谢@JagWire 指出这一点。