如何在 Windows 上安装 OpenJDK 11?

Posted

技术标签:

【中文标题】如何在 Windows 上安装 OpenJDK 11?【英文标题】:How to install OpenJDK 11 on Windows? 【发布时间】:2019-03-01 21:07:56 【问题描述】:

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

解压文件 添加指示已安装版本和路径的注册表项 将 JRE 添加到系统 PATH 向 Windows 注册卸载程序。

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

既然上述集成不再存在,我们应该它们不是必需的吗?

【问题讨论】:

实际上从未需要更改注册表。而且在不操作系统时,也不需要卸载程序。 @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 好吧,没有浏览器插件、控制面板、自动更新工具,也没有询问工具栏的垃圾软件,没有那么多要安装的了。 【参考方案1】:

    将 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 @sarkasronie 查看 launch4j 源代码:sourceforge.net/p/launch4j/git/ci/Release_launch4j-3_12/tree/…(在 HKEY_LOCAL_MACHINE 下)【参考方案2】:

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

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

【讨论】:

虽然接受的答案是正确的,但这是安装任何版本的 JDK/JRE 的更方便的方法【参考方案3】:

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

choco install openjdk

在提升的命令提示符下安装 OpenJDK。

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

choco upgrade openjdk

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

【讨论】:

请注意,这将安装最新版本:openjdk-12.0.2_windows-x64 如果您安装了其他 java 版本,您可能需要检查路径变量并删除/修改旧版本。 @Vadzim choco install openjdk11 截至今天没有提及版本,它安装 openjdk-13 并且请注意,它将像其他答案一样使用 AdoptOpenJDK 作为此方法的说明,jdk11 不再受支持并保持更新。请务必使用“openjdk11”而不是“jdk11”。每个维护者:“对不起。由于 Oracle 要求我们登录 OTN 来安装 JDK 11,我不能再支持巧克力 JDK 11 包。对不起。我要求删除这个 JDK 11 包。请使用开放的 jdk 包。” @GodstimeOsarobo 您可能需要关闭并重新打开您的 shell 窗口(cmd/powershell),因为只有这样 PATH 环境变量才会正确更新。【参考方案4】:

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

【讨论】:

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

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

你也可以从Azul查看Zulu。

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

【讨论】:

【参考方案6】:

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

如果您更喜欢安装程序,有多个发行版。 Java Champions 社区有一个public Google Doc 和Blog post,其中列出了最受支持的 OpenJDK 发行版。目前,这些是:

AdoptOpenJDK 已被 Adoptium/Temurin 取代 Adoptium Temurin Amazon Corretto IBM Semeru(使用 OpenJ9 JVM) 利比里卡来自Bellsoft Microsoft Build of OpenJDK OpenLogic OpenJDK Red Hat OpenJDK SAPMachine(由 SAP 提供支持) Zulu Community(由 Azul Systems 提供支持)

【讨论】:

【参考方案7】:

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

【讨论】:

以上是关于如何在 Windows 上安装 OpenJDK 11?的主要内容,如果未能解决你的问题,请参考以下文章

windows上安装Mercurial4.4.1 克隆OPENJDK版本库

如何在Windows上获取OpenJDK 11的tools.jar?

需求windows32位openjdk1安装包,1.7和1.8都行

如何在 Ubuntu 18.04 上安装最新的 openjdk 12

如何在64位Ubuntu 16.04系统上卸载openjdk并重新安装配置java8环境

如何在 mac 上安装 openjdk 8 和 sbt 并使用默认的 openjdk 8(不是 13)?