因为需要用到多个版本的jdk,所以我同时安装了好几个,在使用【java -version】命令查看jdk版本的时候,信息如下:
java version "1.8.0_381"
Java(TM) SE Runtime Environment (build 1.8.0_381-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.381-b09, mixed mode)
但是我配置的环境变量如下:
JAVA_HOME
C:\Program Files\JDK\jdk-17.0.8\jdk-17.0.8
Path
%JAVA_HOME%\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\VMware\VMware Workstation\bin\;%SystemRoot%\system32;%SystemRoot%;G:\Program Files\MySQL\MySQL Server 8.0\bin;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;%SYSTEMROOT%\System32\OpenSSH\;C:\Program Files\TortoiseSVN\bin;C:\Program Files\TortoiseGit\bin;C:\Program Files\Git\cmd;C:\Program Files (x86)\WinMerge;C:\Program Files (x86)\NetSarang\Xshell 7\;C:\Program Files\nodejs\;%MAVEN_HOME%\bin;%GRADLE_HOME%\bin;%GROOVY_HOME%\bin;%CATALINA_HOME%\bin;C:\PROGRA~1\IBM\SQLLIB\BIN;C:\PROGRA~1\IBM\SQLLIB\FUNCTION;C:\PROGRA~1\IBM\SQLLIB\SAMPLES\REPL;C:\Users\xanadu\Desktop\ffmpeg-git-full_v5.1.2\ffmpeg-git-full_v5.1.2\ffmpeg-2023-02-09-git-159b028df5-full_build\bin;C:\Program Files (x86)\NetSarang\Xftp 7\;C:\Program Files (x86)\NetSarang\Xmanager 8\;%PROTOC_HOME%\bin;
可以发现我并没有配置任何关于jdk1.8的环境变量。
于是我在想是不是jdk目录是17其实内部是1.8的版本?于是我去【C:\Program Files\JDK\jdk-17.0.8\jdk-17.0.8\bin】目录下执行了一下【java -version】,发现的确是jdk17
C:\Program Files\JDK\jdk-17.0.8\bin>java -version
java version "17.0.8" 2023-07-18 LTS
Java(TM) SE Runtime Environment (build 17.0.8+9-LTS-211)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.8+9-LTS-211, mixed mode, sharing)
我就纳闷了,为什么环境变量配置的jdk不生效,反而是1.8生效了?于是网上查了下资料,说是安装jdk的时候会自动在注册表中写入信息:
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft
在这里我看到了被注册的jdk1.8.0_381。于是我直接把它删掉了,重新打开cmd窗口查看jdk版本,信息如下
C:\Users\xanadu>java -version
Error: opening registry key 'Software\JavaSoft\Java Runtime Environment'
Error: could not find java.dll
Error: Could not find Java SE Runtime Environment.
直接给我报错了,我就更纳闷了,之前jdk直接解压配个环境变量都能用,为啥现在不行了呢?又再查资料,发现C盘下可能还存在jdk1.8残留的东西。
要么在【C:\Windows\System32】下,要么在【C:\ProgramData\Oracle\Java\javapath】下,找到【java.exe,javaw.exe,javaws.exe】这3个文件,把它们删掉。
如果两个路径都不在的话,在cmd窗口输入【where java】 命令查看java的位置,我的也正是这种情况,在【C:\Program Files (x86)\Common Files\Oracle\Java\javapath】下面找到了这三个文件。于是把它们删掉,
然后在cmd窗口再查看java版本,输入【java -version】查看,发现成功更换为jdk17
C:\Users\xanadu>java -version
java version "17.0.8" 2023-07-18 LTS
Java(TM) SE Runtime Environment (build 17.0.8+9-LTS-211)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.8+9-LTS-211, mixed mode, sharing)