我试图弄清楚 java 使用哪个环境变量来查找/检测 C:\ProgramData\Oracle\Java\javapath\java.exe
使用的 JRE。
按照 Oracle 的设计,我在 C:\ProgramData\Oracle\Java\javapath\
中仅有的文件是
java.exe
javaw.exe
javaws.exe
如果我将 JAVA_HOME
设置为空或某个随机文件夹,使用 java.exe
运行应用程序仍然有效。所以我只能假设它没有使用 JAVA_HOME
值。那么它是如何找到JRE文件夹的呢?它默认为特定的东西吗?我也没有设置 JRE_HOME
变量。
最佳答案
截至 2018 年,特别是关于 Oracle Java,您可能会发现您的 Java 运行时是通过以下两种方式之一安装的:
包含文件符号链接(symbolic link)的常规目录
如果您查看 C:\ProgramData\Oracle\Java\javapath\
中的文件,您会发现它们实际上是特定 java 二进制文件的符号链接(symbolic link)。
2015-11-13 06:11 PM <SYMLINK> java.exe [C:\Program Files\Java\jre1.8.0_65\bin\java.exe]
2015-11-13 06:11 PM <SYMLINK> javaw.exe [C:\Program Files\Java\jre1.8.0_65\bin\javaw.exe]
2015-11-13 06:11 PM <SYMLINK> javaws.exe [C:\Program Files\Java\jre1.8.0_65\bin\javaws.exe]
包含常规文件的目录连接
使用最新(64!位)的 Java 8 安装实际上预置到系统路径另一个位置:c:\Program Files (x86)\Common Files\Oracle\Java\java路径
。
这次,javapath 本身就是连接点:
2018-07-21 05:59 PM <JUNCTION> javapath [C:\Program Files (x86)\Common Files\Oracle\Java\javapath_target_172906453]
2018-07-21 05:59 PM <DIR> javapath_target_172906453
现在,有趣的是,javapath_target_... 文件夹中的 java.exe
等不是符号链接(symbolic link)。这些文件使用此注册表位置查找 JRE 和 JDK 版本:
[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]
"CurrentVersion"="1.8"
[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.8]
"JavaHome"="C:\\Program Files\\Java\\jre1.8.0_65"
关于java - C :\ProgramData\Oracle\Java\javapath\java. exe使用哪个JRE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49540325/