2012-08-03 88 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並且應該沒問題。 如果你不刪除它, 會導致可怕的問題(如果它在 類路徑中的番石榴之前)或將永遠不會被看到(如果它來的話)

所以基本上:要麼從類路徑中刪除谷歌集合,要麼看到它首先加載番石榴。