同じライブラリ Jar の複数のバージョン: クラスローダーの処理
同じライブラリ (httpclient など) の複数のバージョンを管理すると、Java で課題が生じる可能性がありますクラスロードのため。これは、プロジェクト内のさまざまなフレームワークがそのライブラリの特定のメジャー バージョンに依存している場合に特に当てはまります。
クラスローダーはこれをどのように処理しますか?
Java クラスローダーは解決しようとしますバイナリ名に基づいたクラス。同じバイナリ名を持つ複数のクラスが、ロードされた異なる JAR に存在する場合、次のルールが適用されます:
クラスローダーの分離
クラスローダーはデフォルトで分離を維持します。これは、あるクラスローダーによってロードされたクラスは、別のクラスローダーによってロードされたクラスに直接アクセスできないことを意味します。ただし、クラスが複数の JAR に存在する場合、分離が壊れ、「クラスの重複」エラーが発生する可能性があります。
クラスローダーの競合の回避
クラスローダーの競合を回避するには
Jar を単一として組み込むUnit
Java には、クラス読み込みの目的で複数の JAR を 1 つの「ユニット」に結合する固有の方法がありません。ただし、次のようないくつかの手法を使用できます。
最終的に、戦略の選択はプロジェクトの具体的なニーズと利用可能なリソースによって異なります。
以上がJava クラスローダーは同じライブラリ Jar の複数のバージョンをどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。