文章目錄
- 前言
- 一、錯誤場景預演
- 1.1、查看本地舊版本
- 1.2、java -version 不變問題產生
- 二、檢查新安裝 JDK 是否配置正確
- 2.1、下載并解壓目標 JDK
- 2.2、配置 Java 環境變量
- 2.3、注意 PATH 變量順序
- 2.4、查看 Java 版本信息
- 三、不同具體錯誤場景分析
- 3.1、PATH 變量順序出錯解決方式
- 3.2、系統中存在舊版 java.exe 解決方式
- 四、問題完美解決
- 總結
前言
更新了 JDK 的版本,環境變量也進行了修改,為什么在命令界面輸入 java -version 還是顯示之前舊版本 JDK 的版本信息呢?可能有人在安裝/更新 JDK 時遇到了這樣的疑惑,這是什么原因導致的呢?網上的相關攻略找來找去也沒能解決問題,而導致此問題出現會有多方面的原因,本文我們對此問題進行歸類匯總。一、錯誤場景預演
本人欲將 JDK 8 通過壓縮包的方式升級為 JDK 17。
- 本地舊版本:1.8.0_251
- 預升級版本:17.0.2
1.1、查看本地舊版本
在配置環境變量之前,首先我們要明確,本地存在舊版本,如果本地沒有 Java,也不會出現 java -version 不變的問題,輸入命令檢查:
java -version
我們可以看到舊版本的信息,具體如下圖所示:
1.2、java -version 不變問題產生
在完成 JDK 17 本地解壓、配置之后,命令行輸入 java -version 仍然顯示 1.8.0_251 的版本信息,而非 17.0.2,問題出現。
導致這個問題出現的原因有很多,我們接下來逐一排查。
二、檢查新安裝 JDK 是否配置正確
2.1、下載并解壓目標 JDK
我們將需要安裝的目標 JDK 解壓到目標文件夾,我的如下圖所示:
2.2、配置 Java 環境變量
- JAVA_HOME 變量指向 JDK 根目錄,即 bin 目錄上一級。
- PATH 變量指向 JDK 的 bin 目錄。
通過“瀏覽目錄”的形式分別配置 JAVA_HOME 和 PATH,具體如下圖所示:
2.3、注意 PATH 變量順序
環境變量中配置的 PATH 變量系統是按照先后順序進行讀取的,應將其置于最上方。
順序存在問題,也會出現 java -version 不改變的情況。其順序可以通過上圖右側“上移”的按鈕改變。
2.4、查看 Java 版本信息
按照常理,這個時候我們可以在命令行輸入 java -version 查看新裝 Java 的版本信息。
但是如果我們可以看到仍然顯示的是之前舊版本的信息,而非新版本信息,我們就要到具體場景中進一步分析出錯原因了,具體如下圖所示:
三、不同具體錯誤場景分析
我按照最容易出現的錯誤場景順序將其歸為以下幾類,如果無法解決看下一條即可。
3.1、PATH 變量順序出錯解決方式
這個問題是最常出現的,在 2.3 中我們也提到了。
出錯原因:環境變量中配置的 PATH 變量,系統是按照先后順序進行讀取的,系統讀取 Java 路徑優先級不夠,就會仍然顯示之前的版本信息。 按照優先級應將其置于最上方。
解決方式:通過右側“上移”的按鈕改變 Java bin 目錄的順序即可,具體如下圖所示:
3.2、系統中存在舊版 java.exe 解決方式
出錯原因:如果系統盤快捷調用中存在之前的 java.exe,如存在之前 JDK 1.8.0_251 的 java.exe,系統會優先調用,而不會調用最新的 java.exe, 顯示的也就是舊版本的 java -version。
解決方式:通過搜索工具檢索系統盤(C 盤)中的 java.exe 文件,將含有 java.exe 的文件夾刪掉即可,避免其調用舊版本。具體 3 個 java.exe 文件在 Oracle 目錄的 javapath 相關目錄下,作者本人的如下圖所示,將整個 Oracle 目錄或 Java 目錄刪掉即可。
注意:java.exe 文件僅考慮存在于系統盤內的,這是舊版本 JDK 的輸出文件,其他盤符不考慮。
說明:java.exe 存在于 Oracle 目錄的 Java 目錄下,作者本人的 java.exe 文件位于C:\Program Files (x86)\Common Files 目錄下,也有部分小伙伴的位于 C:\Windows\System32 目錄下,通過檢索工具如 Everything 查找很方便。
四、問題完美解決
通過上述步驟,問題完美解決,命令行輸入 java -version,就可以看到新版本的信息了,具體如下圖所示:
總結
在本文中我們按照常見容易犯的錯誤順序,總結了兩種解決 java -version 不變問題的方法,如果上述兩種方法仍沒能解決你的問題請在本文下方留言,我將盡快回復補充。在開發過程中問題總是層出不窮的,堅持學習、工作依靠 Java,就要深入理解 Java,培養 Java 涵養,重視 Java 基礎知識,在關鍵點不要犯不該犯的小錯誤。我是白鹿,一個不懈奮斗的程序猿。望本文能對你有所裨益,歡迎大家的一鍵三連!若有其他問題、建議或者補充可以留言在文章下方,感謝大家的支持!