Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在 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. 它不做任何花哨的解析或注册表查找,只是一个相对路径引用。
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");