2016-08-23 6 views
0

common-collection jarとバージョンv3.2.1を使用するmaven製品で作業していますが、これはGoogleのリポジトリからダウンロードされます。このプロジェクトを通して、私たちはver1.1を使用しています。今私はとv3.2.2を使用しているサードパーティ製のジャーを使用しなければなりません。これはNoClassDefFoundの例外です。NoClassDefFoundError異なるバージョンのjarファイル

java.lang.NoClassDefFoundErrorスレッドの例外 "メイン": ORG/apacheの/コモン/コレクション/マップ/ ReferenceMap

私は私のプロジェクトでバージョンを変更傾けます。この問題を解決するには?

+0

あなたの依存関係としてこれを設定する際に、新しいサードパーティの依存関係からコモンズコレクションを除外しようとしましたか? – jlumietu

+0

http://stackoverflow.com/questions/24962607/multiple-versions-of-the-same-dependency-in-maven(プロファイルとスコープ)を参照してください。 – Fr333du

+0

これをチェックしてください:

答えて

0

は、今私が使用するサードパーティのjarファイルを使用する必要があり、私がv1.1の

  • である私のプロジェクトでバージョンを変更傾ける

    <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 --> 
    <dependency> 
        <groupId>org.apache.commons</groupId> 
        <artifactId>commons-collections4</artifactId> 
        <version>4.1</version> 
    </dependency> 
    
  • 1
    1. に移動しているようですv3.2.2との共通コレクション

    難しい選択肢があります。プロジェクトのバージョンを変更(アップグレード)するか、サードパーティライブラリを使用しないでください。 (これは、サードパーティ製のライブラリの依存関係が難しいと仮定しています... APIクラスが移動された場合などのように思われます)

    おそらく最初の選択肢はおそらく良いでしょう。時代遅れのコモンズコレクションライブラリに長く滞在すればするほど、このような問題が多く発生します。


    実際には3番目の可能性がありますがトラブルを求めています。 v1.1とv3.2.2の両方と互換性のある独自のバージョンのコモンズコレクションを作成しようとする可能性があります。しかし、ここに問題があります:

    • あなたのコードベースで必要な限り、このカスタムバージョンのcommons-collectionを維持して、余分な作業をしています。 (コードのバージョンが長期間サポートされている場合(例えば、長期サポート要件を満たしている顧客にリリースした場合など)長い時間がかかる可能性があります。

    • コードの一部が1つのパッケージにReferenceMapを必要とし、別の部分が別のパッケージにそれを必要とすると仮定します。


    別の可能性(他の悪いアイデアでは!)クラスローダとトリッキーな事をするかもしれないが、それは、同様の問題につながることができます。同じクラスの2つのバージョンが異なるクラスローダーによってアプリケーションにロードされている場合、タイプシステムはそれらが異なるタイプであると主張します。割り当てには対応しません。型キャストが予期せず失敗するなど。

    関連する問題