如何在Windows系统上安装OpenJDK 11?

423

过去,Oracle曾发布过可执行安装程序,用于在Windows平台上完成以下操作:

  • 解压文件
  • 添加注册表键,指示已安装版本和路径
  • 将JRE添加到系统PATH中
  • 在Windows中注册卸载程序。

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

既然没有了上述集成,我们应该如何在Windows上安装OpenJDK 11呢?难道它们不是必要的吗?


1
更改注册表实际上并不需要。而且如果不操纵系统,您也不需要卸载程序。 - Holger
1
@Gili 是使用 JAVA_HOME 环境变量还是像 IntelliJ IDEA 一样通过配置直接路径来实现的? - Mikhail Kholodkov
19
有个社区项目叫做ojdkbuild,它提供了OpenJDK的Windows安装程序。目前还没有JDK 11的版本,但我希望我们很快就能得到它。 - ZhekaKozlov
1
@Gili http://wiki.eclipse.org/FAQ_How_do_I_run_Eclipse%3F#Find_the_JVM 注意注册表在任何地方都没有出现... - Holger
2
@Robert,嗯,没有浏览器插件、控制面板、自动更新工具或者那些 Ask Toolbar 的垃圾软件,剩下可安装的东西就不多了。 - Holger
显示剩余12条评论
12个回答

579
  1. 将zip文件解压到一个文件夹中,例如C:\Program Files\Java\,这将创建一个名为jdk-11的文件夹(其中bin文件夹是直接子文件夹)。您可能需要管理员权限将zip文件解压到此位置。

  2. 设置PATH:

    • 选择控制面板,然后选择系统。
    • 点击高级选项,再点击环境变量。
    • 将JDK安装的bin文件夹的位置添加到系统变量中的PATH变量中。
    • 下面是PATH变量的典型值:C:\WINDOWS\system32;C:\WINDOWS;"C:\Program Files\Java\jdk-11\bin"
  3. 设置JAVA_HOME:

    • 在系统变量下,点击新建。
    • 将变量名称输入为JAVA_HOME。
    • 将变量值输入为JDK的安装路径(不包括bin子文件夹)。
    • 点击确定。
    • 点击应用更改。
  4. 在IDE(例如IntelliJ或Eclipse)中配置JDK。

完成了。

要查看是否成功,打开命令提示符并输入java -version,看看是否打印出您新安装的JDK。

如果您想卸载,请撤销上述步骤。

注意:您还可以将JAVA_HOME指向JDK安装文件夹,然后将PATH变量设置为%JAVA_HOME%\bin。这样当您想要更改JDK时,只需更改JAVA_HOME变量,而不必更改PATH


10
不要忘记注册表项,例如Launch4j用于查找已安装的jre/jdk。 - Robert
2
@Lior:这只是我知道使用注册表项的一个程序。可能还有其他几十个或上百个程序也在使用这些注册表项。 - Robert
5
可能是这样,但是:a. 我使用 Java 自 1.1 版本以来从未设置过注册表 - 所以这并非必须操作。b:Windows 注册表通常被认为是一种需要避免的机制(例如 https://blog.codinghorror.com/was-the-windows-registry-a-good-idea/)- 因此,我认为除非特别需要,不应该使用它。例如 - 在其中设置一个值的错误可能导致难以恢复的错误。 - Lior Bar-On
30
您可以将JAVA_HOME指向您安装多个JDK的文件夹,这是完全错误的。许多程序和脚本假定JAVA_HOME指向默认的Java安装(jdk或jre),并在“%JAVA_HOME%\bin”下搜索可执行文件。因此,您不能将JAVA_HOME指向带有多个JDK安装的文件夹。 相反,您可以将值“%JAVA_HOME%\bin;”添加到路径中,然后(安装新JDK时)只需更新JAVA_HOME即可。 - kool79
3
请注意,您需要将Java11的PATH条目移动到PATH的开头。这样可以覆盖某些(多个!)路径设置为“...\Oracle\Java\javapath”。如果您不这样做,测试可能会失败。 - Roeland Van Heddegem
显示剩余12条评论

280

Java 17 (LTS)及以上版本

对于Java 17及以上版本,您可以使用Eclipse Adoptium网站。根据他们的简介,Eclipse Adoptium项目是原始AdoptOpenJDK任务的延续。

Java 11 (LTS)、Java 8 - 16

对于Java 11(8到16),您可以使用AdoptOpenJDK网站,该网站由Java社区托管。您可以在那里找到OpenJDK 8到16的 .msi安装程序,它将执行问题中列出的所有操作(解压缩,注册表键,PATH变量更新(和JAVA_HOME),卸载程序...)。


35
虽然已有的答案是正确的,但这是一种更方便的方法来安装任何版本的JDK/JRE。 - optevo
@AJDhaliwal,我已经编辑了答案,更突出地展示了Eclipse Adoptium。 - Pimgd

41

使用Chocolatey包管理器。它是类似于npm的命令行工具。安装后,使用以下命令:

choco install openjdk --version=11.0
在提升权限的命令提示符中安装OpenJDK 11(如果要安装最新版本,请省略--version参数)。
要将已安装的版本更新为最新版本,请键入:
choco upgrade openjdk

非常简单易用,特别是升级到最新版本时非常有帮助。无需手动调整路径环境变量。


4
注意,这将安装最新版本:openjdk-12.0.2_windows-x64。 - Vadzim
1
如果您安装了其他Java版本,您可能需要检查路径变量并删除/修改旧版本。 - Ketu
2
@Vadzim今天安装openjdk11时,不需要指定版本,它会默认安装openjdk-13。另外需要注意的是,它将使用AdoptOpenJDK,就像其他答案中提到的一样。 - F.I.V
1
@GodstimeOsarobo 你可能需要关闭并重新打开你的shell窗口(cmd/powershell),因为只有这样PATH环境变量才会得到适当的更新。 - Tobias
1
您可以使用chocolatey,并明确要求OpenJDKv11:choco install openjdk --version=11.0。如此处所述。 - idrositis
显示剩余6条评论

24

根据 @ZhekaKozlov 的评论:ojdkbuild 在 Windows 平台上提供了 OpenJDK 构建版本(目前有 8 和 11 两个版本),可用 zipmsi 文件进行下载。


4
对我而言,那些构建过程没有正确设置 PATH 变量。至少我无法执行 java -version 并获得期望的输出。 - hannes101
1
我找不到OpenJDK msi安装包。我会写一个脚本,并在今天晚些时候分享一个答案,该脚本可以提取并设置机器的PATH和JAVA_HOME。 - vezenkov
1
@vezenkov:请在此处更新答案(这是社区维基的原因),或者与项目开启一个问题。 - Martin Schröder
如果您正在从先前的版本进行升级,补充接受的答案,我甚至需要重新启动服务器才能在命令行上看到openjdk版本得到更新。 - desiguy

5

您可以使用Amazon Corretto,这是一款免费的多平台、开箱即用的OpenJDK发行版。它提供长期支持,其中包括性能增强和安全修复。请查看此处的安装说明。

您还可以检查AzulZulu

另外需要强调的是,Amazon Corretto和Zulu都符合TCK标准。您可以在此处此处查看OpenJDK构建版本的比较。


4

从Java 12开始,甲骨文公司官方提供了通用可用性(GA)和早期访问(EA)的Windows 64位OpenJDK版本(GPL2 + Classpath Exception),可以在JDK网站上以tar.gz/zip的形式下载。

如果您喜欢安装程序,有几个发行版可供选择。Java Champions社区发布了一个公共Google文档博客文章,列出了最受支持的OpenJDK发行版。目前,这些发行版包括:


3

Scoop是一个安装你熟知和喜爱的程序的工具,通过命令行以最小的阻力来完成。

  • 安装scoop
  • 添加Java scoop bucket add java
  • 安装OpenJDK scoop.cmd install openjdk17

2
除了以上的答案之外,值得注意的是您必须将JDK路径条目移动到Path的顶部。
在系统变量编辑路径中移动最新的JDK条目到顶部。请参考下面的图片:
Inside System Variables Edit Path and Move Up the latest JDK entry to the top

1

https://www.openlogic.com/openjdk-downloads让我选择了一个32位版本的OpenJDK8(不要问为什么 - Arduino IDE无法编译11),我认为它们只是将AdoptOpenJDK MSIs包装起来,但我在AdoptOpenJDK上找不到32位发行版。


1
WinGet现在可用于Windows 10+,以在您的计算机上安装Microsoft Build of OpenJDK。请访问https://aka.ms/msopenjdk/了解详细信息并访问下载页面,您可以在那里找到更多有用的指南和软件包。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接