怎麼通過環境變數來切換jdk版本
阿新 • • 發佈:2018-12-21
問題與分析
我在本地安裝了1.7和1.8兩個版本的jdk,此時我的JAVA_HOME環境變數配置的是jdk1.8,在cmd視窗輸入java -version
發現報錯如下:
C:\Users\Lewis>java -version Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion' has value '1.8', but '1.7' is required. Error: could not find java.dll Error: Could not find Java SE Runtime Environment.
接著輸入javac -version
則是正常:
C:\Users\Lewis>javac -version
javac 1.8.0_191
javac命令能正常執行, 說明我配置的CLASSPATH變數和JAVA_HOME變數正確。而java命令報錯,則說明PATH變數有問題。cmd視窗在執行命令時會去PATH變數的值裡尋找路徑,當找到對應的路徑後就不會再繼續查詢下去。
所以我們應該把java相關的路徑放到PATH變數值的最前面,需要注意的是,如果你安裝了Oracle,你會發現Oracle的環境變數會直接排到最前面,也就是說,這時候會優先去Oracle指定的目錄下尋找java的命令。
但只是將java路徑放置到最前面還是不夠的,因為WINDOW本身系統SYSTEM32裡面的環境變數載入等級要優先於使用者設定的環境變數,所以我們還需要將C:\Windows\System32
java.exe、javaw.exe、javaws.exe
三個程式刪掉或者重新命名才行。
解決方案
- 將PATH環境變數的變數值裡的java路徑放置到最前面;
- 將
C:\Windows\System32
目錄下的java.exe、javaw.exe、javaws.exe
三個程式刪掉或者重新命名。
接下來進行測試,會發現java -version
得到了正確的結果:
C:\Users\Lewis>java -version java version "1.8.0_191" Java(TM) SE Runtime Environment (build 1.8.0_191-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
接著將JAVA_HOME改為jdk1.7的目錄,再一次測試java和javac命令,都能得到正確的結果。