JDK环境变量配置以及JDK版本切换所遇问题

时间:2021-04-28 15:07:19

安装JDK7, C:\Program Files\Java\jdk1.7.0_80 为JDK的安装路径。

JAVA_HOME=C:\Program Files\Java\jdk1.7.0_80

CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

Path=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;D:\instantclient_11_2;C:\stra

wberry\c\bin;C:\strawberry\perl\bin;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

然后javac测试,java -version 查看版本。OK啦!


但,突然我想切换到以前的JDK6版本。很简单,我就把JAVA_HOME变更为JDK6的安装地址 ,JAVA_HOME=C:\Program Files\Java\jdk1.6.0_43

然后在cmd中javac测试,java -version查看版本。发现:

C:\Users\Administrator>java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)


咦怎么还是JDK7??! 


后来发现,在C:\Windows\System32路径下,有三个java可执行程序:

JDK环境变量配置以及JDK版本切换所遇问题

JDK环境变量配置以及JDK版本切换所遇问题

JDK环境变量配置以及JDK版本切换所遇问题


JDK环境变量配置以及JDK版本切换所遇问题

发现因为JDK7是时间偏后安装的,所以在C:\Windows\System32路径下,三个java可执行程序的安装时间和JDK7一致。哦,我们发现原来JDK安装时,它们会复制三个java可执行程序到C:\Windows\System32系统文件下。


那为什么会优先读取到系统文件夹下的java.exe呢,明明我们配置了Path路径啊?


接下来我们看,这是我们的Path路径:

Path=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;D:\instantclient_11_2;C:\stra

wberry\c\bin;C:\strawberry\perl\bin;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

我们去cmd看下具体路径信息:

C:\Users\Administrator>Path
PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32
\WindowsPowerShell\v1.0\;D:\instantclient_11_2;C:\strawberry\c\bin;C:\strawberry
\perl\bin;C:\Program Files\Java\jdk1.6.0_43\bin;C:\Program Files\Java\jdk1.6.0_4
3\jre\bin;

哦,原来啊  %SystemRoot%\system32 == C:\Windows\System32   那不就是系统文件夹下java.exe的路径吗,Path第一时间就读取到它了!


那怎办呢?那就对症下药!你看:

Path=%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\Windows

PowerShell\v1.0\;D:\instantclient_11_2;C:\strawberry\c\bin;C:\strawberry\perl\bin;

我们把路径放在最前面不就OK啦!再去cmd中试下:

C:\Users\Administrator>java -version
java version "1.6.0_43"
Java(TM) SE Runtime Environment (build 1.6.0_43-b01)
Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01, mixed mode)

没问题了,搞定啦!