2017-04-27 36 views
2

依存関係をjarファイルとして追加しようとしていて、JARファイルは実行に必要なすべてのクラスとともに出荷されています。ファイルジャー依存関係とMaven中心依存関係とのJavaの競合

compile files('lib/org.hl7.fhir.igpublisher.jar') 

それに加えて、私は依存関係として追加される他のいくつかの依存関係がほとんどありません。

compile ("ca.uhn.hapi.fhir:hapi-fhir-base:2.3") 

ここで、同じクラスが異なるバージョンで出荷されているため、クラスの競合に関連する多くの問題に直面しています。

理想的なケースでは、この問題をどのように解決すればよいですか?私は、ローカルジャーは常にそれ自身のファイルを使用する必要があり、他の依存関係はローカルjarファイルを無視すべきだと言いたい。

注: -私はIntelliJのアイデアを使用しています。

答えて

0

これは難しい問題です。クラスパスは1つしかなく、同じクラスの複数のバージョンは、そのバージョンの1つだけが表示され、他のバージョンは隠されていることを意味します。

"fat jar"に依存関係を宣言することは避けてください。可能であれば、依存関係のないスリムバージョンを使用する必要があります(しばしば両方のバージョンが公開されます)。別の方法がない場合は、手動でjarファイルを分割して、このようなスリムなjarファイルを作成することができます。クラスパスの依存関係を慎重に順序付けることによって構造を制御することも可能ですが、これはやや脆弱です。

関連する問題