在Windows系统上,假设您安装了多个JRE并假设您通过显式指定java.exe的绝对路径来启动java,并假设您不依赖任何环境变量(如JAVA_HOME)将java.exe接收它的运行时来自它所在的目录树,或者它依赖于某些注册表设置,即"官方" java安装程序创建?
换句话说,Java用于查找运行时的算法是什么?您不必在类路径上指定运行时,如果您尝试输出System.getProperty的内容(" java.class.path"),则不会显示运行时。
答案 0 :(得分: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");