Java版本问题的实战场景
机器安装了一个JDK 8的安装版本,默认的安装路径是 C:\Program Files\Java
,JDK的安装版本同时安装了JDK 和JRE, 安装的路径分别是:
- JDK 路径:
C:\Program Files\Java\jdk1.8.0_361
- JRE 路径:
C:\Program Files\Java\jre1.8.0_361
因为某些软件需要支持JDK 8之上的版本,所以需要进行高版本的JDK安装。同一台机器可以进行多个JDK的安装,但是这里为了简便起见,使用了 OpenJDK 17的解压版本。
下载OpenJDK 17 并解压之后, 将解压后的目录复制到 C:\Program Files\Java\jdk-17
中, 复制的目录结构如下:
。
为了让JDK 17 生效, 这里配置了 JAVA_HOME 和path。
以上配置完成, 使用 java -version
看一下Java版本,发现还是 JDK 8版本。
为什么呢? 为什么不是使用 JDK 17, 还是JDK 8呢?
JDK 使用版本溯源
在命令行使用 where java
查看使用的 Java:
查看的路径是 C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe
,这个路径是怎么来的呢?
Common Files\\Oracle\\Java\\javapath
路径的由来
Common Files\\Oracle\\Java\\javapath
路径是在安装Java运行环境(JRE)时自动创建的。当安装JRE时,它会将Java的可执行文件解析链接到这个路径中。这样,当用户在命令行中输入Java相关命令时,操作系统可以找到并执行这些文件。这个路径的目的是提供一个可供所有用户访问和使用Java的统一位置。
在JRE安装的时候,会将这个路径添加到 Path中:
基于以上,故会出现上面的配置了 JAVA _HOME 和 Path之后, 指定Java版本依旧没有生效的状况。
解决方法
删除环境变量 Path 中的 C:\Program Files (x86)\Common Files\Oracle\Java\javapath
即可。