问题经过
新装了JDK-17的包,按照流程修改了环境变量的Path
,并且添加了JAVA_HOME
(值为JDK-17安装的路径),为了以后修改版本方便,我直接删除了系统变量Path里JDK-17安装时自动配置的C:\Program Files\Common Files\Oracle\Java\javapath
,改成了%JAVA_HOME%\bin
。然后测试的时候打开CMD,验证javac.exe
时没出现问题:
但验证java
的时候问题就来了:
我当时的状态是直接???,安装个17.0.7版本直接变成1.8.0版本!为了解决问题,我先是系统环境变量和用户的PATH,以及可能的JAVA_HOME
;CLASS_PATH
路径,均未找到与JDK冲突的同名环境变量,重启了系统也无法成功。查询网上相关问题发现,可能是之前安装了JDK老版本,残留在system32文件夹下,然后我找遍了system32文件夹,也没找到任何与Java相关的东西,后来没办法才认真一个个找了所有环境变量,才终于发现:
打开一看,果然坑爹的SPSS居然自带JRE运行环境!!!当时为了参加数学建模比赛才下载的(也没怎么用),没想到害我无法成功运行JDK!
总结原因
- 可以看到,SPSS是Java运行环境,里面只有
java.exe
,没有javac.exe
,这也正是我运行javac.exe
版本成功,但java.exe
却失败的原因。 - 在环境变量中,对于普通变量而言,用户变量的优先级是大于系统变量的。但是!!!只有PATH变量例外!它是系统变量优先于用户变量!并且按列表顺序由上到下检索,我先安装了SPSS,再安装了JDK-17,并且我只修改了用户变量,后面即使添加了
%JAVA_HOME%\bin
到系统变量的PATH
里,但由于从上往下顺序检索,优先找到SPSS的JRE路径运行java.exe
。
解决办法
-
因为我决定不用SPSS软件了(没有数据统计方面的需求了),又因为这破软件害我浪费几十分钟,一狠心就直接卸载了!环境变量
E:\Program Files\IBM\SPSS\Statistics\25\JRE\bin
也直接删除掉,再次运行,果然成功: -
如果是还有使用SPSS的需求的话,那么就先把JDK-17的路径的环境变量向上移,使其优先级提高,当需要用SPSS的时候,在让SPSS的优先级更高,也能解决问题。