ChatGPT解决这个技术问题 Extra ChatGPT

如何在 Windows 上安装 OpenJDK 11?

过去,Oracle 曾经发布过适用于 Windows 的可执行安装程序,它会:

解压文件

添加指示已安装版本和路径的注册表项

将 JRE 添加到系统 PATH

向 Windows 注册卸载程序。

从 Java 11 开始,Oracle 的免费 Java 版本 (Oracle OpenJDK) 似乎不包含安装程序。它只是一个包含二进制文件的 zip 文件。

既然上述集成不再存在,我们应该如何在 Windows 上安装 OpenJDK 11?它们不是必需的吗?

实际上从未需要更改注册表。当不操作系统时,您也不需要卸载程序。
@Gili 使用 JAVA_HOME 环境变量或通过配置中的直接路径(如 IntelliJ IDEa)是吗?
有一个社区项目 ojdkbuild,它为 OpenJDK 提供 Windows 安装程序。 JDK 11 尚不可用,但我希望我们能尽快得到它。
@Gili wiki.eclipse.org/FAQ_How_do_I_run_Eclipse%3F#Find_the_JVM 注意注册表没有出现在任何地方......
@Robert 好吧,如果没有浏览器插件、控制面板、自动更新工具,也没有询问工具栏垃圾软件,就没有那么多要安装的东西了。

G
Georg Schölly

将 zip 文件解压缩到一个文件夹中,例如 C:\Program Files\Java\,它将创建一个 jdk-11 文件夹(其中 bin 文件夹是一个直接子文件夹)。您可能需要管理员权限才能将 zip 文件解压缩到此位置。设置路径:选择控制面板,然后选择系统。单击高级,然后单击环境变量。将JDK安装的bin文件夹的位置添加到系统变量中的PATH变量中。以下是 PATH 变量的典型值:C:\WINDOWS\system32;C:\WINDOWS;"C:\Program Files\Java\jdk-11\bin" 设置 JAVA_HOME:在系统变量下,单击新建。输入变量名称为 JAVA_HOME。输入变量值作为JDK的安装路径(不包括bin子文件夹)。单击确定。单击应用更改。在您的 IDE(例如 IntelliJ 或 Eclipse)中配置 JDK。

你已经准备好了。

要查看它是否有效,请打开命令提示符并键入 java -version 并查看它是否打印了您新安装的 JDK。

如果要卸载 - 只需撤消上述步骤。

注意:您还可以将 JAVA_HOME 指向 JDK 安装文件夹,然后将 PATH 变量设置为 %JAVA_HOME%\bin。因此,当您想更改 JDK 时,您只需更改 JAVA_HOME 变量并保持 PATH 不变。


不要忘记注册表项,例如 Launch4j 用于查找已安装的 jre/jdk。
@Lior:这只是我知道的一个使用注册表项的程序。也可能有几十个或几百个其他程序使用这些注册表项。
可能是这样,但是:我从 1.1 版开始使用 Java,没有设置注册表——所以这不是必须的。 b:Windows 注册表通常被认为是一种避免机制(例如 blog.codinghorror.com/was-the-windows-registry-a-good-idea) - 因此,如果不是特别需要,我认为不应该使用它。例如 - 在其中设置值的错误可能导致难以从错误中恢复。
> 您可以将 JAVA_HOME 指向您有多个 JDK 安装的文件夹。这是完全错误的。许多程序和脚本假定 JAVA_HOME 指向默认的 java 安装(jdk 或 jre),它们在“%JAVA_HOME%\bin”下搜索二进制文件。因此,您不能将 JAVA_HOME 指向具有多个 jdk 安装的文件夹。相反,您可以将值“%JAVA_HOME%\bin;”添加到路径中然后(安装新的 JDK 时)您只能更新 JAVA_HOME
请添加您必须将 Java11 PATH 条目移动到 PATH 的开头。这会将一些(多个!)路径设置覆盖为“...\Oracle\Java\javapath”。如果您不这样做,测试可能会失败。
P
Pimgd

AdoptOpenJDK 是由 java community 托管的新网站。您可以在那里找到 OpenJDK 8 到 16 的 .msi 安装程序,它将执行问题中列出的所有内容(解包、注册表项、PATH 变量更新(和 JAVA_HOME)、卸载程序...)。

在撰写本文时,AdoptOpenJDK 仍托管最新版本的 OpenJDK,但未来计划在 Eclipse Adoptium 提供新版本。


尽管接受的答案是正确的,但这是安装任何版本的 JDK/JRE 的更方便的方法
T
Tobias

使用 Chocolatey packet manager。它是一个类似于 npm 的命令行工具。安装后,使用

choco install openjdk --version=11.0

在提升的命令提示符中安装 OpenJDK 11(省略 --version 参数以安装最新版本)。

要将已安装的版本更新到最新版本,请键入

choco upgrade openjdk

使用起来非常简单,特别有助于升级到最新版本。无需手动摆弄路径环境变量。


请注意,这将安装最新版本:openjdk-12.0.2_windows-x64
如果您安装了其他 java 版本,您可能需要检查路径变量并删除/修改旧版本。
@Vadzim choco 从今天起安装 openjdk11 而不提及版本,它安装 openjdk-13 并且请注意,它将像其他答案一样使用 AdoptOpenJDK
@GodstimeOsarobo 您可能需要关闭并重新打开您的 shell 窗口(cmd/powershell),因为只有这样 PATH 环境变量才会正确更新。
您可以使用 chocolatey 并专门要求 OpenJDKv11:choco install openjdk --version=11.0。如here所述。
2
2 revs

来自@ZhekaKozlov 的评论:ojdkbuild 具有适用于 Windows(zipmsi)的 OpenJDK 构建(当前为 8 和 11)。


对我来说,那些构建没有正确设置 PATH 变量。至少我不能发出 java -version 并获得所需的输出。
我找不到 OpenJDK msi。我将编写脚本并在今天晚些时候的答案中分享它,该答案为机器提取和设置 PATH 和 JAVA_HOME。
@vezenkov:请在此处更新答案(出于某种原因,它是社区 wiki)和/或打开该项目的问题。
如果您是从以前的版本升级到接受的答案,我什至必须重新启动服务器才能看到 openjdk 版本在命令行上得到更新。
S
Swapnil

您可以使用 Amazon Corretto。它可以免费使用多平台、生产就绪的 OpenJDK 发行版。它提供长期支持,包括性能增强和安全修复。检查安装说明 here

您也可以从 Azul 检查 Zulu

我想在这里强调的另一件事是 Amazon Corretto 和 Zulu 都符合 TCK 标准。您可以看到 OpenJDK 构建比较 herehere


B
Bernhard Stadler

对于 Java 12 及更高版本,Oracle 的 OpenJDK(GPL2 + 类路径例外)的官方通用可用性 (GA) 和早期访问 (EA) Windows 64 位版本可从 JDK website 以 tar.gz/zip 的形式提供。

如果您更喜欢安装程序,有几个发行版。 Java Champions 社区提供的 public Google DocBlog post 列出了最受支持的 OpenJDK 发行版。目前,这些是:

AdoptOpenJDK 已被 Adoptium/Temurin (Hotspot) 和 IBM Semeru (OpenJ9) 取代

铁木兰收养

亚马逊 Corretto

IBM Semeru(使用 OpenJ9 JVM)

来自 Bellsoft 的 Liberica

OpenJDK 的 Microsoft 构建

OpenLogic OpenJDK

红帽 OpenJDK

SAPMachine(由 SAP 提供支持)

Zulu 社区(由 Azul Systems 支持)


D
David Airapetyan

https://www.openlogic.com/openjdk-downloads 允许我选择 32 位版本的 OpenJDK8(不要问 - Arduino IDE 无法使用 11 编译),我认为他们只是围绕 AdoptOpenJDK MSI 进行了包装,但我在 AdoptOpenJDK 上找不到 32 位发行版.


P
Prince

除了上面的答案,值得注意的是,你必须将你的 JDK Path 条目移动到 Path 的顶部

https://i.stack.imgur.com/EVgyk.png