Windows 上的甲骨文 Java

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

我最近为基于 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\ 及其符号链接会很有帮助。在(幸运的是很少见的)情况下,甚至可能需要更改这些符号链接。