文章目录
- 前言
- 一、错误场景预演
- 1.1、查看本地旧版本
- 1.2、java -version 不变问题产生
- 二、检查新安装 JDK 是否配置正确
- 2.1、下载并解压目标 JDK
- 2.2、配置 Java 环境变量
- 2.3、注意 PATH 变量顺序
- 2.4、查看 Java 版本信息
- 三、不同具体错误场景分析
- 3.1、PATH 变量顺序出错解决方式
- 3.2、系统中存在旧版 java.exe 解决方式
- 四、问题完美解决
- 总结
前言
更新了 JDK 的版本,环境变量也进行了修改,为什么在命令界面输入 java -version 还是显示之前旧版本 JDK 的版本信息呢?可能有人在安装/更新 JDK 时遇到了这样的疑惑,这是什么原因导致的呢?网上的相关攻略找来找去也没能解决问题,而导致此问题出现会有多方面的原因,本文我们对此问题进行归类汇总。一、错误场景预演
本人欲将 JDK 8 通过压缩包的方式升级为 JDK 17。
- 本地旧版本:1.8.0_251
- 预升级版本:17.0.2
1.1、查看本地旧版本
在配置环境变量之前,首先我们要明确,本地存在旧版本,如果本地没有 Java,也不会出现 java -version 不变的问题,输入命令检查:
java -version
我们可以看到旧版本的信息,具体如下图所示:
1.2、java -version 不变问题产生
在完成 JDK 17 本地解压、配置之后,命令行输入 java -version 仍然显示 1.8.0_251 的版本信息,而非 17.0.2,问题出现。
导致这个问题出现的原因有很多,我们接下来逐一排查。
二、检查新安装 JDK 是否配置正确
2.1、下载并解压目标 JDK
我们将需要安装的目标 JDK 解压到目标文件夹,我的如下图所示:
2.2、配置 Java 环境变量
- JAVA_HOME 变量指向 JDK 根目录,即 bin 目录上一级。
- PATH 变量指向 JDK 的 bin 目录。
通过“浏览目录”的形式分别配置 JAVA_HOME 和 PATH,具体如下图所示:
2.3、注意 PATH 变量顺序
环境变量中配置的 PATH 变量系统是按照先后顺序进行读取的,应将其置于最上方。
顺序存在问题,也会出现 java -version 不改变的情况。其顺序可以通过上图右侧“上移”的按钮改变。
2.4、查看 Java 版本信息
按照常理,这个时候我们可以在命令行输入 java -version 查看新装 Java 的版本信息。
但是如果我们可以看到仍然显示的是之前旧版本的信息,而非新版本信息,我们就要到具体场景中进一步分析出错原因了,具体如下图所示:
三、不同具体错误场景分析
我按照最容易出现的错误场景顺序将其归为以下几类,如果无法解决看下一条即可。
3.1、PATH 变量顺序出错解决方式
这个问题是最常出现的,在 2.3 中我们也提到了。
出错原因:环境变量中配置的 PATH 变量,系统是按照先后顺序进行读取的,系统读取 Java 路径优先级不够,就会仍然显示之前的版本信息。 按照优先级应将其置于最上方。
解决方式:通过右侧“上移”的按钮改变 Java bin 目录的顺序即可,具体如下图所示:
3.2、系统中存在旧版 java.exe 解决方式
出错原因:如果系统盘快捷调用中存在之前的 java.exe,如存在之前 JDK 1.8.0_251 的 java.exe,系统会优先调用,而不会调用最新的 java.exe, 显示的也就是旧版本的 java -version。
解决方式:通过搜索工具检索系统盘(C 盘)中的 java.exe 文件,将含有 java.exe 的文件夹删掉即可,避免其调用旧版本。具体 3 个 java.exe 文件在 Oracle 目录的 javapath 相关目录下,作者本人的如下图所示,将整个 Oracle 目录或 Java 目录删掉即可。
注意:java.exe 文件仅考虑存在于系统盘内的,这是旧版本 JDK 的输出文件,其他盘符不考虑。
说明:java.exe 存在于 Oracle 目录的 Java 目录下,作者本人的 java.exe 文件位于C:\Program Files (x86)\Common Files 目录下,也有部分小伙伴的位于 C:\Windows\System32 目录下,通过检索工具如 Everything 查找很方便。
四、问题完美解决
通过上述步骤,问题完美解决,命令行输入 java -version,就可以看到新版本的信息了,具体如下图所示:
总结
在本文中我们按照常见容易犯的错误顺序,总结了两种解决 java -version 不变问题的方法,如果上述两种方法仍没能解决你的问题请在本文下方留言,我将尽快回复补充。在开发过程中问题总是层出不穷的,坚持学习、工作依靠 Java,就要深入理解 Java,培养 Java 涵养,重视 Java 基础知识,在关键点不要犯不该犯的小错误。我是白鹿,一个不懈奋斗的程序猿。望本文能对你有所裨益,欢迎大家的一键三连!若有其他问题、建议或者补充可以留言在文章下方,感谢大家的支持!