在我的项目中,我同时使用了glassfish-embedded 3.1.1和番石榴库……问题是glassfish使用的是旧的芭乐实现(即google-collections)……
这会在运行时产生NoSuchMethodError,例如,当使用Lists.reverse()或Sets.newIdentityHashSet()时,这是后来在guava中引入的。
我找不到任何解决方案来解决这个问题。(唯一的方法是手动回收glassfish jar中的com/google类目录...)
发布于 2011-10-01 09:42:45
Glassfish永远不应该在自己的jar中包含com.google类。那是个错误。
UPDATE@sly7_7: glassfish似乎不再在自己的jar中包含芭乐,但这取决于芭乐制品。这应该可以解决问题。感谢@JagWire指出这一点。
发布于 2011-10-01 00:19:45
你可以通过指定下面的代码来克服这个问题。阅读Delegation section of the Class Loaders chapter.
<class-loader delegate="false" />查看这篇文章,了解Java应用程序中的类加载:Java EE class loading standard
发布于 2014-02-21 05:23:46
通过使用下面的Glassfish v4构建,我能够消除这个错误:
http://grepcode.com/snapshot/maven.java.net/content/groups/promoted/org.glassfish.main.extras/glassfish-embedded-all/4.0.1-b01
也许值得一看。
https://stackoverflow.com/questions/7613059
复制相似问题