安裝多個JDK時的技巧 (親測可用)
我的電腦本來是JDK8的,后來的想在不同的JDK版本下測試JDK的垃圾回收器。
一開始的的思路是,先安裝JDK,為每個JDK配置自己的家目錄,然后在想用哪個版本的時候,將JAVA_HOME
指向對應JDK的家目錄即可(這里PATH跟CLASSPATH不用變,只變JAVA_HOME 即可在不同JDK間切換),直接上圖 (有時候圖片來的更直觀):
先裝的JDK9 (問題發現與解決)
但當時,裝完JDK9,改了JAVA_HOME
后,cmd命令行下java -version
,顯示java9,但當時切換不到JDK8,當時一臉懵逼,最后找到原因:
當裝完新的JDK后,它會給你在PATH自動配置一個環境變量,如圖:
當找到C:\ProgramData\Oracle\Java\javapath
所指的目錄時發現如下三個文件:
當在cmd下運行這個java.exe時發現:
總結: 這才明白,當裝完JDK9時,JDK自己給你配好了環境變量,而且它在PATH環境變量里面屬於第一個,因為覆蓋了后面自己配的環境,所以才在命令行顯示的jdk9。
后裝的JDK7 (問題發現與解決)
安裝完JDK7之后,又出現異常,不論怎么改自己配置的環境變量,命令行下由java -version
一直顯示jdk8了(玄學。。。。),根絕排查上一個錯的經驗,猜想肯定是PATH 下JAVA_HOME
前面的某個環境變量在做鬼,因此把JAVA_HOME
移動到最頂端時,一切又回到了我們的預期。然后通過將JAVA_HOME
放在PATH下不同的位置終於找出了做鬼的環境變量,
然后在它對應的目錄下找到了
同樣在cmd命令行下測試該java.exe的版本
總結
現在終於明白之前各種情況的原因了,當裝完JDK9后把jdk9自己配好的環境變量刪掉,然后把C:\Windows\System32
移動到JAVA_HOME
之后(或者刪除該目錄下java.exe),因為C:\Windows\System32
包含大量的系統文件,不能把該目錄直接刪除。然后每次更改JAVA_HOME
的值都能達到我們預期的效果。