2012-08-03 89 views
2

我试图用番石榴为我的项目,并启动JBoss的时候有很多的警告:如何使用番石榴与JBoss 6

WARN [ClassLoaderManager] Unexpected error during load of:com.google.common.base.Equivalences$Equals: java.lang.IncompatibleClassChangeError: class com.google.common.base.Equivalences$Equals has interface com.google.common.base.Equivalence as super class 
WARN [ClassLoaderManager] Unexpected error during load of:com.google.common.base.FunctionalEquivalence: java.lang.IncompatibleClassChangeError: class com.google.common.base.FunctionalEquivalence has interface com.google.common.base.Equivalence as super class 
WARN [ClassLoaderManager] Unexpected error during load of:com.google.common.collect.AbstractMapBasedMultiset$1$1: java.lang.IllegalAccessError: class com.google.common.collect.AbstractMapBasedMultiset$1$1 cannot access its superclass com.google.common.collect.Multisets$AbstractEntry 
[...] 

从我的研究,似乎有不兼容的老Google收藏。 此线程从community.jboss.org建议使用jboss-scanning.xml。我没有改变,JBoss文档指定这个文件用于过滤注释...

您是否已经遇到过这个问题?

你能提出一个解决方案吗?

回答

6

你是正确的,谷歌收集和番石榴是不兼容的,并规定很清楚的google collections home page

番石榴是老谷歌集合 库的完全兼容的超集。它还包含数年的错误修复,文档修复和 性能修复,因此我们强烈建议您使用Guava代替Google Collections的 。

如果您的应用程序在同一个类路径中同时包含google-collect-1.0.jar和 guava-r ##。jar,只需删除Google Jar,即可删除Google Jar并且应该没问题。 如果你不删除它, 会导致可怕的问题(如果它在 类路径中的番石榴之前)或将永远不会被看到(如果它来的话)

所以基本上:要么从类路径中删除谷歌集合,要么看到它首先加载番石榴。