在Windows上安装Java 11 OpenJDK(系统路径问题)

6

最近推出了Java 11,众所周知,该版本没有安装文件。

要安装无需安装程序的Java,我当然已经将系统设置的PATH和JAVA HOME设置为存放Java 11解压缩文件的文件夹地址(根据类似问题的已接受答案建议)。

唯一的问题是,所有这些有关系统设置的建议在我的计算机上都没有任何作用:

  • 使用命令行检查输出我的旧Java 9版本
  • 将Java 9从文件夹中删除后,命令行不会识别任何Java。

那么,是否实际上存在安装此版本的方法呢?

感谢未来的答案,也感谢不将我的问题标记为重复(由于上述原因)。


6
如果 Windows 在路径上找不到它,那么你设置的路径是错误的。就是这么简单,没有比这更复杂的事情了。 - Michael
1
OpenJDK没有安装程序。Oracle的JDK仍然有。但是当您想从Oracle切换到OpenJDK时,您应该正确卸载旧版本,而不仅仅是删除其文件夹。您很可能在Windows安装中有java可执行文件,它们尝试通过注册表确定Java位置。 - Holger
2
@paulsm4:通常的原因是,从2019年1月1日开始,OracleJDK需要付费。 - Robert
3
@paulsm4:为什么选择OpenJDK?为了最终离开Oracle帝国,加入基于社区的Java的良好王国。换句话说,不冒免费20年的东西现在要付费的风险。 - TomateFraiche
@Michael:事实上,这确实是与我的系统路径有关的问题。是我自己的失误。我很快会删除我的问题,并解释一下发生了什么:我的路径中有多个条目,当我将Java放置在路径行的开头时,期望的更改最终起作用了。 在此之前,Java地址位于行末,这种路径设置方式对其他软件有效,但对Java无效。 - TomateFraiche
显示剩余4条评论
2个回答

4
问题出在路径行的格式上:
  1. 我的路径包含多个条目,我把Java放在行末,但更改没有生效。
  2. 但当我把它放在路径行的开头时,Java 11被接受并在Windows上正常运行。
对于其他遇到类似问题的用户: 问题的根源正如Klitos Kyriacou所指出的那样,我的路径包含其他条目,其中有一个单词“java”。当这些条目在classpath中排在Java 11之前时,它们会使我添加的java版本无效。

即使路径末尾有Java目录,您也应该能够使其正常工作。您的路径可能包含其他一些包含无效文件的目录,这些文件也被称为java/javac,并且因为它们在路径中排在前面,所以占据了优先权。键入WHERE JAVAC或WHERE JAVA查看实际选择的版本。 - Klitos Kyriacou
所有可能的命令行检查(包括您推荐的)都返回正确的版本。此外,我已经检查了Java 11的新功能,它们运行良好,所以它肯定有效。最后,您关于其他文件的观点是正确的,这些文件包括一个单词“java”,并且优先于Java 11放在最后:在那里我确实有一个名为C:\Program Files (x86)...\javapath的条目。根据其他SOverflow响应,在安装Java 8(我也需要这个)时会自动添加它。 - TomateFraiche
我也是!我把它放在PATH变量的开头,然后它就可以工作了。 - Laura Liparulo

1

看起来Oracle的卸载程序没有清理干净。
即使卸载了所有旧版jdk/jre并安装了OracleJDK 11,我的系统仍然有“C:\ProgramData\Oracle\Java\javapath”文件夹和PATH中的“C:\ProgramData\Oracle\Java\javapath”条目。
因此当我运行“java -version”时,会出现以下信息:

C:\>java -version
Error: opening registry key 'Software\JavaSoft\JRE'
Error: could not find java.dll
Error: Could not find Java SE Runtime Environment.

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