How to install OpenJDK 11 on Windows?
过去,Oracle曾为Windows发布可执行安装程序,该安装程序将:
-
解压缩文件
-
添加表明已安装版本和路径的注册表项
-
将JRE添加到系统PATH
-
在Windows上注册卸载程序。
从Java 11开始,Oracle的Java免费版本(Oracle OpenJDK)似乎未包含安装程序。 它只是一个包含二进制文件的zip文件。
鉴于上述集成不再存在,我们应该如何在Windows上安装OpenJDK 11? 他们不是有必要吗?
-
从未真正需要更改注册表。而且,当不使用系统时,您也不需要卸载程序。
-
安装JDK和使用转储之间的区别
-
@MikhailKholodkov答案已过时,不再与JDK 11相关。
-
对于将来,最好有一个安装程序/更新程序。也许我们应该启动一个开源项目,或者已经存在一个项目?
-
@Robert在这些答案中究竟是什么过时了?输出目录的布局有所变化,但仅此而已。问题涵盖了JDK的安装和纯"复制"之间的区别。似乎完全相关。
-
@Holger本机启动器(例如IDE)应该如何在没有注册表项或默认安装位置的情况下定位JDK?剩下的唯一选择是将JDK与每个本机应用程序捆绑在一起。全局JDK的概念已经死了吗?
-
@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很好,没有浏览器插件,控制面板,自动更新工具,也没有Ask工具栏的垃圾软件,因此没有太多安装空间了。
-
只需从github.com/ojdkbuild/ojdkbuild/releases下载.msi
-
@jfleach ojdkbuild与完全不同的人完全不同。
-
Jedit和Netbeans使用注册表。
-
还有Eclipse ...
将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中配置JDK(例如IntelliJ或Eclipse)。
你定了。
要查看它是否有效,请打开命令提示符并键入java -version,然后查看它是否显示您新安装的JDK。
如果您要卸载-只需撤消上述步骤即可。
注意:您也可以将JAVA_HOME指向JDK安装目录,然后将PATH变量设置为%JAVA_HOME%\\bin。因此,当您想更改JDK时,只需更改JAVA_HOME变量,并保留PATH不变。
-
不要忘记注册表项,例如Launch4j用于查找已安装的jre / jdk。
-
如果您正在使用ubuntu,该怎么办
-
@Robert-抱歉,但这是一个值得自己讨论的特定工具。
-
@WilFerraciolli我在问题中添加了一个标签,以阐明它是Windows特定的。我建议为Ubuntu打开一个单独的问题。
-
@Lior:我知道这只是一个使用注册表项的程序。也可能有数十个或数百个其他程序使用这些注册表项。
-
可能是这样,但是:从1.1版开始,我一直在使用Java,而没有设置注册表-因此,这不是必须的。 b:Windows注册表通常被认为是一种避免的机制(例如blog.codinghorror.com/was-the-windows-registry-a-good-idea)-因此,我认为,如果不是特别需要,则不应使用它。例如-在其中设置值的错误会导致难以恢复的错误。
-
我已经在Windows 10上安装了OpenJDK并设置了JAVA_HOME和PATH。在Windows命令行上,我可以执行" javac -version"和" jshell",但不能执行" java -version"。那很奇怪。 IntelliJ可以工作,所以我认为我可以。
-
>您可以将JAVA_HOME指向具有多个JDK安装的文件夹。这是完全错误的。许多程序和脚本都假定JAVA_HOME指向默认的Java安装(jdk或jre),并且它们在"%JAVA_HOME%\ bin"下搜索二进制文件。因此,您不能将JAVA_HOME指向具有多个jdk安装的文件夹。相反,您可以将"%JAVA_HOME%\ bin;"值添加到Path。然后(当安装了新的JDK时)您只能更新JAVA_HOME
-
@Robert这些注册表项launch4j在寻找什么?
-
@sarkasronie请参阅launch4j源代码:sourceforge.net/p/launch4j/git/ci/Release_launch4j-3_12/tree /(在HKEY_LOCAL_MACHINE下)
-
正如@craftwar在下面的降级答案中提到的那样,在按照上述答案的说明运行java --version时,可能会遇到以下错误:错误:打开注册表项Software \ JavaSoft \ Java Runtime Environment错误:找不到java.dll错误:找不到Java SE Runtime Environment。这是由于Oracle JDK卸载程序未删除" C:\ ProgramData \ Oracle"中的文件,一旦删除了" Oracle"目录,一切便按预期开始工作。
-
请补充,您必须将Java11 PATH条目移动到PATH的开头。这可以覆盖" ... \ Oracle \ Java \ javapath"的某些(多个!)路径设置。如果不这样做,则测试可能会失败。
-
如果将这些步骤包含在OpenJDK官方网站上的"安装说明"中,那将是很好的……所有内容都表明"可以下载并解压缩"。我不明白为什么他们不提任何有关添加到PATH和设置JAVA_HOME的事情。
AdoptOpenJDK是Java社区托管的新网站。您可以在此处找到适用于OpenJDK 8至14的.msi安装程序,它将执行问题中列出的所有内容(解包,注册表项,PATH变量更新(和JAVA_HOME),卸载程序...)。
-
尽管接受的答案是正确的,但这是安装任何版本的JDK / JRE的便捷方法
使用Chocolatey数据包管理器。这是一个类似于npm的命令行工具。安装后,请使用
在提升权限的命令提示符下安装OpenJDK。
要将安装的版本更新为最新版本,请键入
相当简单易用,尤其有助于升级到最新版本。无需手动摆弄路径环境变量。
-
请注意,这将安装最新版本:openjdk-12.0.2_windows-x64
-
如果您安装了其他Java版本,则可能要检查路径变量并删除/修改旧版本。
-
@Vadzim choco从今天开始安装openjdk11,没有提到版本,它安装openjdk-13,只是要注意,它将像其他答案一样使用AdoptOpenJDK
来自@ZhekaKozlov的评论:ojdkbuild具有适用于Windows(zip和msi)的OpenJDK构建(当前为8和11)。
-
对我来说,那些构建没有正确设置PATH变量。至少我不能发出java -version并获得所需的输出。
-
我找不到OpenJDK msi。病假的脚本并在今天晚些时候的答案中共享它,以提取并设置机器的PATH和JAVA_HOME。
-
@vezenkov:请在此处更新答案(有其原因的社区Wiki)和/或打开该项目的问题。
-
如果要从以前的版本升级,要添加到已接受的答案中,我什至必须重新启动服务器才能在命令行上查看openjdk版本。
您可以使用Amazon Corretto。免费使用OpenJDK的多平台,可用于生产的发行版。它带有长期支持,其中包括性能增强和安全修复。在此处查看安装说明。
您也可以从Azul检查Zulu。
我还要在这里强调的一件事是Amazon Corretto和Zulu都符合TCK。您可以在此处和此处看到OpenJDK构建比较。
Oracle Java卸载程序不会删除所有文件。
检查" C:\ ProgramData \ Oracle"是否存在,子目录中是否有一些Java文件。 (例如:java.exe,javaw.exe)
删除它以防止执行错误的Java文件。