我最近为基于Windows 7的笔记本电脑下载了JDK 9的早期访问版本 (内部版本68 )。 由于这是早期版本,因此当自动安装在笔记本电脑上安装主要Java Runtime Environment(JRE)引入了一些不太理想的问题时,我并不感到惊讶。 在玩完要尝试的JDK 9功能之后,我下载了最新的Oracle JDK 8 ( Update 45 )并使用自动安装程序进行安装。 虽然仍在该会话中,但一切正常。
当我打开笔记本电脑的电源并在第二天早上登录时,我的Java运行时环境不正常。 该问题追溯到C:\ProgramData\Oracle\Java\javapath\java.exe
,这是我的Path
环境变量中的第一个条目。 当我更改目录以查看C:\ProgramData\Oracle\Java\javapath
目录的内容时,我看到了以下内容:
此屏幕快照表明C:\ProgramData\Oracle\Java\javapath\
目录中的java.exe
, javaw.exe
和javaws.exe
条目实际上是指向JRE 9中类似命名的可执行文件的符号链接 ( < SYMLINK >
)安装。
下一个屏幕快照显示了此操作对Java运行时环境的影响:
该消息明确说明了问题所在:“系统找不到文件C:\ ProgramData \ Oracle \ Java \ javapath \ java.exe。” 系统寻找该文件的原因是因为C:\ProgramData\Oracle\Java\javapath\
目录是Path
的第一个条目,并且该目录中的符号链接指向一个不存在的JRE 9目录(我只有JDK 9目录):
StackOverflow用户shpeley 很好地概述了这种情况以及他/她如何解决它。 正如我所做的那样,shpeley发现在回退版本时,自动安装程序不会更新这些符号链接(在shpeley的情况下,是从JDK 8到JDK 7)。 从shpeley的解决方案中借用(方便,因为提供了在DOS中进行符号链接的语法),我在C:\ProgramData\Oracle\Java\javapath\
目录中运行了以下命令:
mklink java.exe "C:\Program Files\Java\jdk1.8.0_45\bin\java.exe"
mklink javaw.exe "C:\Program Files\Java\jdk1.8.0_45\bin\javaw.exe"
mklink javaws.exe "C:\Program Files\Java\jdk1.8.0_45\bin\javaws.exe"
Windows上的Oracle JDK / JRE安装通常会非常顺利,至多,我通常只需要更改%JAVA_HOME%
环境变量以指向新目录(在升级JDK时)。 但是,当偶尔情况不太顺利时,了解目录C:\ProgramData\Oracle\Java\javapath\
及其符号链接会C:\ProgramData\Oracle\Java\javapath\
。 在(非常罕见)的情况下,甚至有必要更改这些符号链接。
翻译自: https://www.javacodegeeks.com/2015/07/oracle-java-on-windows.html