Windows 上的甲骨文 Java

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

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 54w+ 字,讲解图 2476+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 1900+ 小伙伴加入学习 ,欢迎点击围观

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