2

Windowsシステムでは、複数のJREがインストールされていて、java.exeの絶対パスを明示的に指定してjavaを起動し、JAVA_HOMEなどの環境変数に依存していないと仮定すると、java.exeはそれが配置されているディレクトリツリーですか、それとも「公式」Javaインストーラーが作成したレジストリ設定に依存しますか?

言い換えれば、Javaがランタイムを見つけるために使用するアルゴリズムは何ですか?クラスパスでランタイムを指定する必要はありません。System.getProperty( "java.class.path")の内容を出力しようとすると、ランタイムは表示されません。

4

1 に答える 1

3

を呼び出すC:\Some\Path\Java\jre\bin\java.exeと、を使用しますC:\Some\Path\Java\jre\lib\rt.jar。基本的にを使用し..\lib\rt.jarます。特別な解決やレジストリルックアップは行わず、相対パス参照のみを行います。

Javaアプリケーション内からその参照を見つける必要がある場合は、次を使用できます。

String javaPath = System.getProperty("java.home");
File rtJar = new File(javaPath, "lib/rt.jar");
于 2012-09-28T17:20:45.830 に答える