2017-06-07 14 views
0

私は、POMに依存するJavaライブラリBを使用するmavenプロジェクトAを持っています。そのライブラリはライブラリDを使用する他のライブラリCを使用します。 ACの両方がそのライブラリDを使用していて、バージョンが異なるコンパイルで問題が発生します。それは次のようになります。各JARに異なるバージョン依存関係を使用する方法

A ----- B 
|  | 
D(v1) C 
     | 
     D(v2) 

AD(v2)への依存関係を変更することはできませんが、また、私はAさんにPOM D(v2)を除外した場合:

<dependency> 
    <groupId>...</groupId> 
    <artifactId> C </artifactId> 
    <exclusions> 
     <exclusion> 
      <groupId>...</groupId> 
      <artifactId> D </artifactId> 
      <version> v2 </version> 
     </exclusion> 
    </exclusions> 
</dependency> 

を私はいくつかのクラスMissingClassというコンパイルエラーになりますはクラスCで解決されません。最も迷惑なことは、D(v2)にはがありません。クラスがありません

私はMavenのはAD(v1)依存関係を使用しての場合、およびBD(v2)の場合されていることを確認するためにいくつかの方法があるのMavenとやや習熟していないのですか?

+0

できません。クラスパスには1つのバージョンのDしか存在できません。 'A'が' v2'と互換性がなく、 'C'が' v1'と互換性がない場合は、プロジェクトで 'A'と' C'の両方を使用することはできません。 'v1'と互換性のある古いバージョンの' C'を使用してください。 – Andreas

答えて

0

これはJavaクラスパスの問題です。 Mavenを使用せずにcmd行を使って動作させるとシナリオが機能しますか? (つまり、アプリを実行し、クラスパスを手動で指定します)。

答えが「はい」の場合は、おそらくMavenで実行できます。あなたの説明からの私の理解は、いいえ、あなたはcmd行を経由して実行することはできませんでした。

関連する問題