Javaプロセスを開始するときに、クラスパスを使用してサードパーティのjarを追加することを知っています。JVM がどのように読み取るか、または JVM がクラスパスで指定された jar をどのように処理するかについて、リソースまたは情報を持っている人はいますか?
JVM がクラスパスを正確に処理する方法に興味があります。
ありがとう。
Javaプロセスを開始するときに、クラスパスを使用してサードパーティのjarを追加することを知っています。JVM がどのように読み取るか、または JVM がクラスパスで指定された jar をどのように処理するかについて、リソースまたは情報を持っている人はいますか?
JVM がクラスパスを正確に処理する方法に興味があります。
ありがとう。
クラスパスは直線的に読み取られるため、クラスが要求されると、Java はそのクラスパスでそのクラスの最初のインスタンスを見つけます。そうは言っても、Java を起動すると、実際には 3 つのクラスパス レベルが使用されます。最初のものは、Java コア jar (java.lang など) を含むブートストラップ クラスパスです。2 つ目は、Java インストールの拡張 (ext) ディレクトリにあるすべての jar を含む拡張クラスパスです。3 番目は、実行中のプログラムのユーザー指定のクラスパスです。これらのクラスパスは常に、ブートストラップ、拡張機能、最後にユーザー指定のクラスパスの順に直線的に読み取られます。これは、誰かが通常のプログラムで java.lang クラスをオーバーライドできないようにするためです。クラスパスの後半に別の一致がある場合でも、最初に一致したクラスが常に優先されます。