2

プロジェクトにGuavaを使用しようとしていますが、JBossを起動すると多くの警告が表示されます。

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のドキュメントでは、このファイルを使用してアノテーションをフィルタリングするように指定されています...

あなたはすでにこの問題に遭遇しましたか?

解決策を提案できますか?

4

1 に答える 1

6

あなたは正しいです、グーグルコレクションとグアバは互換性がありません、そしてそれはグーグルコレクションのホームページに非常に明確に述べられています:

Guavaは、古いGoogleコレクションライブラリの完全に互換性のあるスーパーセットです。また、何年にもわたるバグ修正、ドキュメント修正、パフォーマンス修正が含まれているため、Googleコレクションの代わりにGuavaを使用することを強くお勧めします。

アプリケーションが同じクラスパスにgoogle-collect-1.0.jarとguava-r##。jarの両方で終わる場合は、GoogleコレクションJARを削除するだけで問題ありません。削除しないと、ひどい問題が発生するか(クラスパスでグアバの前に来る場合)、とにかく見られることはありません(後に来る場合)

つまり、基本的には、クラスパスからgoogleコレクションを削除するか、guavaが最初にロードされることを確認します。

于 2012-08-03T15:31:06.157 に答える