C:\\ProgramData\\Oracle\\Java\\javapath\\java.exe 使用哪个 JRE?

新手上路,请多包涵

我试图弄清楚 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 var。

原文由 Eric B. 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.9k
2 个回答

这会给你一个想法:

 java -verbose | more

原文由 access_granted 发布,翻译遵循 CC BY-SA 3.0 许可协议

截至 2018 年,特别是关于 Oracle Java,您可能会发现您的 Java 运行时以两种方式之一安装:

包含文件符号链接的常规目录

如果您查看 C:\ProgramData\Oracle\Java\javapath\ 中的文件,您会发现它们实际上是指向特定 Java 二进制文件的符号链接。

 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\javapath 。这一次,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

现在,有趣的是,javapathtarget… 文件夹中的 java.exe 等不是符号链接。这些文件使用此注册表位置查找 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"

原文由 Chris Becke 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题