在我的项目中,我正在使用glassfish-embedded 3.1.1和番石榴lib ...问题是glassfish附带了番石榴的旧实现(即google-collections)......
这会在运行时导致NoSuchMethodError,例如使用稍后在番石榴中引入的Lists.reverse()或Sets.newIdentityHashSet()时。
我找不到任何解决方案来解决这个问题...(唯一一个是手动删除glassfish jar中的com / google类目录...)
答案 0 :(得分:6)
您可以通过以下方式克服此问题。阅读Delegation section of the Class Loaders chapter.
<class-loader delegate="false" />
检查此SO帖子,以便在Java EE应用程序中加载类:Java EE class loading standard
答案 1 :(得分:4)
Glassfish绝不应该在自己的jar中包含com.google类。这是一个错误。
UPDATE [@sly7_7]:似乎glassfish不再在自己的罐子中包含番石榴,但它取决于番石榴工件。这应该可以解决问题。 感谢@JagWire指出这一点。
答案 2 :(得分:0)
通过使用以下Glassfish v4版本,我能够消除错误:
可能值得一看。