配置多個JDK存在的問題與解決方案 (親測可用)


安裝多個JDK時的技巧 (親測可用)

我的電腦本來是JDK8的,后來的想在不同的JDK版本下測試JDK的垃圾回收器。

一開始的的思路是,先安裝JDK,為每個JDK配置自己的家目錄,然后在想用哪個版本的時候,將JAVA_HOME指向對應JDK的家目錄即可(這里PATH跟CLASSPATH不用變,只變JAVA_HOME 即可在不同JDK間切換),直接上圖 (有時候圖片來的更直觀):
Snipaste_2019-08-04_09-03-48.jpg

先裝的JDK9 (問題發現與解決)

但當時,裝完JDK9,改了JAVA_HOME后,cmd命令行下java -version,顯示java9,但當時切換不到JDK8,當時一臉懵逼,最后找到原因:

當裝完新的JDK后,它會給你在PATH自動配置一個環境變量,如圖:
Snipaste_2019-08-04_09-12-21.jpg

當找到C:\ProgramData\Oracle\Java\javapath所指的目錄時發現如下三個文件:
Snipaste_2019-08-04_09-14-39.jpg

當在cmd下運行這個java.exe時發現:
Snipaste_2019-08-04_09-16-39.jpg
總結: 這才明白,當裝完JDK9時,JDK自己給你配好了環境變量,而且它在PATH環境變量里面屬於第一個,因為覆蓋了后面自己配的環境,所以才在命令行顯示的jdk9。

后裝的JDK7 (問題發現與解決)

安裝完JDK7之后,又出現異常,不論怎么改自己配置的環境變量,命令行下由java -version一直顯示jdk8了(玄學。。。。),根絕排查上一個錯的經驗,猜想肯定是PATH 下JAVA_HOME前面的某個環境變量在做鬼,因此把JAVA_HOME移動到最頂端時,一切又回到了我們的預期。然后通過將JAVA_HOME放在PATH下不同的位置終於找出了做鬼的環境變量,
Snipaste_2019-08-04_09-30-28.jpg

然后在它對應的目錄下找到了
Snipaste_2019-08-04_09-32-55.jpg
同樣在cmd命令行下測試該java.exe的版本
Snipaste_2019-08-04_09-35-20.jpg

總結

現在終於明白之前各種情況的原因了,當裝完JDK9后把jdk9自己配好的環境變量刪掉,然后把C:\Windows\System32移動到JAVA_HOME之后(或者刪除該目錄下java.exe),因為C:\Windows\System32包含大量的系統文件,不能把該目錄直接刪除。然后每次更改JAVA_HOME的值都能達到我們預期的效果。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM