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 回答