我最近为基于 Windows 7 的笔记本电脑下载了 JDK 9 ( 内部版本 68 )的早期访问版本。因为这是一个早期版本,当自动安装在笔记本电脑上安装主要 Java Runtime Environment (JRE) 时引入了一些不太理想的问题时,我并不感到惊讶。在使用了我想尝试的 JDK 9 功能后,我下载了最新的 Oracle JDK 8 ( 更新 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\
及其符号链接会很有帮助。在(幸运的是很少见的)情况下,甚至可能需要更改这些符号链接。