我应该将 JAVA_HOME 用于 OpenJDK 的 JDK 还是 OpenJDK 的 JRE?

Should I use JAVA_HOME for OpenJDK's JDK or OpenJDK's JRE?

在最近的许多情况下,但现在我尝试使用安装程序,尽管 JAVA_HOME 设置为 JDK 由 AdoptOpenJDK 安装程序为 Windows 10 64x 安装。我找不到修复它的方法,无论如何今天我尝试安装 Netbeans 8.2 并显示此错误,但我发现您可以将参数传递给安装程序 (--javahome) 然后错误消息从 "JDK was not found (in your machine)" 到 "Couldn't find a JRE (in the location given)",这更奇怪。 然后我将 JRE 作为 javahome 传递并且它起作用了,这让我感到惊讶,在安装程序中你可以选择 netbeans 应该使用哪个 jdk,它正确地显示了安装的 jdk。太...为什么会这样?

编辑: JAVA_HOME 是 "C:\Program Files\AdoptOpenJDK\jdk-13.0.2.8-hotspot\" 我在安装期间没有更改它

--javahome 参数是 "C:\Program Files\AdoptOpenJDK\jdk8u242-b08-jre" 我在安装后意识到它不在 Path

但我 100% 确定 "C:\Program Files\AdoptOpenJDK\jdk-13.0.2.8-hotspot\" 在 Path 中,这很奇怪,因为根据我读到的内容,据推测 AdoptOpenJDK 安装程序会使用 JRE 安装 JDK里面?或者至少 JDK 不应该是 JRE 的超集吗?

编辑 2: 由于这个答案,我将 JDK 路径保留为 JAVA_HOME。 Should JAVA_HOME point to JDK or JRE?

您的实际问题不清楚,但这看起来像是 X-Y 问题。您真正的问题是您在安装 NetBeans 8.2 时遇到了问题(对吗?),但您错误地得出结论认为原因与您的 JAVA_HOME 设置有某种关联。不是。

首先,from the NetBeans 8.2 download page,请注意 "JDK 8 是安装和 运行 需要 Java SE、Java EE 和所有 NetBeans 捆绑包。NetBeans 8.2 不 运行 JDK 9 或更高版本"。 所以至少部分问题是您试图将 JDK 13 与 NetBeans 8.2 一起使用。那是行不通的。

其次,您无需为 NetBeans 8.2 设置环境变量 JAVA_HOME 即可工作。我只是故意破坏了 JAVA_HOME 的设置,然后 NetBeans 8.2 重新启动并且工作正常。这是一件好事,因为出于与 NetBeans 完全无关的其他原因,您可能合法地希望将 JAVA_HOME 设置为任意 JDK,这样做可能会中断NetBeans 8.2 如果它依赖 JAVA_HOME.

第三,NetBeans 也不关心您的 PATH 设置。 (顺便说一句,NetBeans 忽略 JDK_HOMEPATH 意味着您可以安装不同版本的 NetBeans,每个版本使用不同的 JDK,并安全地 运行 它们并发。)

要明确指定您的 NetBeans 8.2 安装应使用的 JDK:

  • 找到文件 netbeans.conf。它是一个文本文件,位于 NetBeans 8.2 安装目录下的 etc 目录中。
  • 在任何文本编辑器中打开该文件,找到包含文本 netbeans_jdkhome.
  • 的行
  • 如果该行以 # 开头(表示注释行),请将其删除,然后设置 netbeans_jdkhome 以指定 JDK 8 安装路径。在我的 Windows 10 机器上,该行如下所示:netbeans_jdkhome="C:\Java\jdk1.8.0_221".
  • 确保只有一个未注释的行将值设置为 netbeans_jdkhome(这将指向您的 JDK 8 安装目录),然后将更改保存到 netbeans.conf 并(重新)启动 NetBeans 8.2。

希望这就是您解决问题所需要做的全部工作,但如果没有,请更新您的问题以明确需要解决的确切问题。