Java 在一个系统上安装多个JRE时使用哪个rt.jar?

Java 在一个系统上安装多个JRE时使用哪个rt.jar?,java,runtime,Java,Runtime,在Windows系统上,假设安装了多个JRE,并通过显式指定java.exe的绝对路径来启动java,假设您不依赖任何环境变量,如JAVA_HOME,JAVA.exe会从其所在的目录树中获取其运行时,还是依赖于“官方”JAVA安装程序创建的某些注册表设置 换句话说,Java用于查找其运行时的算法是什么?不必在类路径上指定运行时,如果试图输出System.getProperty(“java.class.path”)的内容,则不显示运行时。如果调用C:\Some\path\java\jre\bin\

在Windows系统上,假设安装了多个JRE,并通过显式指定java.exe的绝对路径来启动java,假设您不依赖任何环境变量,如JAVA_HOME,JAVA.exe会从其所在的目录树中获取其运行时,还是依赖于“官方”JAVA安装程序创建的某些注册表设置


换句话说,Java用于查找其运行时的算法是什么?不必在类路径上指定运行时,如果试图输出System.getProperty(“java.class.path”)的内容,则不显示运行时。

如果调用
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");

我怀疑这是真的,但不确定。我现在已经证明这也是真的。至于系统属性,这可以从System.getProperty(“java.home”)中看到。