背景
JDK区分安装版和zip解压版,在命令行通过java -version
查看效果,前者安装后可能在没有设置JAVA_HOME
和PATH
情况下,也能正确显示,后者必须设置,这是什么原因呢?
当我们本地存在多个版本的JDK,切换目标版本时,一般通过修改JAVA_HOME,但是有时会失效,是什么原因呢?
解密
对于安装版,在安装过程中,会写入一些注册表或环境变量,因此即使不设置JAVA_HOME和PATH,也会按照优先级,从多个地方查看;而对于解压版,不会有自动写注册表,只能从AVA_HOME和PATH中查找
目前可能引起失效的原因:
-
保证JAVA_HOME和PATH设置为预期目标的JDK版本,然后重启命令行
-
如果第一步失效,找到目录C:\Windows\System32,将java.exe,javaw.exe,javaws.exe删除
原因是查看path的变量,里面包含
%SystemRoot%\system32;
之类的路径,在安装jdk时,有的会复制上述的几个exe至该目录下 -
如果第二步仍失效,查看path中是否包含类似
C:\ProgramData\Oracle\Java\javapath
,也就是含有Oracle关键词的配置(不包括本地确实安装了oracle数据库的相关配置),删除掉即可。