これは経験豊富なコーダーにとってばかげた質問かもしれません。しかし、私は私のプロジェクトで使用される他のフレームワーク/ jarのいくつかが必要とするライブラリ(httpクライアント)を持っています。ただし、それらすべてに次のような異なるメジャーバージョンが必要です。
httpclient-v1.jar => Required by cralwer.jar
httpclient-v2.jar => Required by restapi.jar
httpclient-v3.jar => required by foobar.jar
クラスローダーは、どういうわけかそれらを分離するのに十分インテリジェントですか?おそらくそうではありませんか?クラスが3つのすべてのjarで同じ場合、クラスローダーはこれをどのように処理しますか。どれがロードされ、なぜですか?
Classloaderはjarを1つだけピックアップしますか、それともクラスを任意に混合しますか?たとえば、クラスがVersion-1.jarからロードされた場合、同じクラスローダーからロードされた他のすべてのクラスはすべて同じjarに入りますか?
この問題をどのように処理しますか?
jarを「required.jar」に何らかの形で「組み込む」ためのトリックがあり、それによって、それらは「1つのユニット/パッケージ」として表示されます。 Classloader
、それか、何らかの形でリンクされますか?