同じクラスがさらに 2 つの jar に存在する場合、問題が発生するはずです。
どういう意味?なぜこれが問題になるのでしょうか?
そのようなシナリオでは、プログラムによってインポートされたクラスは何ですか? (タイムスタンプが古いクラス??)
クラスが 2 つの JAR に存在する場合、クラスはクラス パス上の最初の JAR からロードされます。引用クラスパスの設定(引用部分はアーカイブファイルにも適用されます):
複数のクラスパス エントリを指定する順序は重要です。Java インタープリターは、クラスパス変数に表示される順序でディレクトリ内のクラスを検索します。上記の例では、Java インタープリターは最初に必要なクラスをディレクトリで探しますC:\java\MyClasses
。そのディレクトリに適切な名前のクラスが見つからない場合にのみ、インタプリタはC:\java\OtherClasses
ディレクトリを調べます。
つまり、特定の順序が必要な場合は、JAR ファイルをクラス パスで明示的に列挙するだけです。これは、アプリケーション サーバー ベンダーが一般的に使用するものです。製品の特定のクラスにパッチを適用するには、パッチを適用したクラスを含む JAR (例: CR1234.jar
) をクラス パスのメイン JAR (例: ) の前に置きますweblogic.jar
。
このような合併症を避けるために私たちが従うことができる慣行は何ですか.
まあ、明白な答えは、それをしないことです (または、上記のサンプルのように意図的にのみ)。