此博客鏈接:https://www.cnblogs.com/ping2yingshi/p/14930400.html
1.問題描述
window10安裝過jdk后,當編譯運行java代碼時,java和javac的版本不一致。java是1.8.0_181,而javac是16.0.1,如下圖所示。
2.出現原因
我安裝jdk版本是16.0.1的版本,可是在我電腦上還有一個jre1.8.0_181。
3.解決方案
1.把path 里%JAVA_HOME%\bin放在path變量的最前面。(嘗試未成功)
2.在系統環境變量中添加path,並添加JAVA_HOME%\bin。(嘗試成功)
4.重現java和javac版本不一致問題
4.1回退到原來的版本
1.把3中1的%JAVA_HOME%\bin不放在path變量的最前面,放到原來倒數第二的位置。
2.刪除path中添加的JAVA_HOME%\bin。
3.在控制台中輸入java和javac,java和javac的版本是一樣的,不是預期結果。實驗失敗。
4.2重新下載兩個版本的jdk,重現java和javac版本不一致問題
1.在官網上下載1.8.0版本的jdk。
2.解壓安裝jdk。詳情參見博客:https://www.cnblogs.com/ping2yingshi/p/14930839.html
3.在環境變量中分別配置兩個版本jdk的路徑。
4.手動切換不同版本的jdk,在命令行中查看java和javac的版本,發現切換后的java和javac版本是和配置的JAVA_HOME中的jdk版本是致的,沒有出現java和javac版本不一致問題。實驗失敗。
4.3請教師妹
4.3.1重現問題
師妹在自己電腦上,先安裝了jre,然后安裝了jdk,先把我的問題重現了,然后解決這個問題,最后又重現了問題。
4.3.2我本人電腦重現問題
過程
1.師妹懷疑我C盤里有java.exe,先讓我在C:\Windows\System32找java.exe,但是在我電腦的C:\Windows\System32沒有找到java.exe。
2.對比我和師妹的環境變量,發現我電腦的系統環境中沒有path。
3.經過在c盤搜索java.exe文件,雖然在c盤的某個目錄下找到了,但是師妹認為這不是我們需要的版本。
4.重新下載一個jre,觀察默認安裝路徑,發現默認安裝路徑還是在C:\Windows\System32下。
5.在命令行輸入where java,顯示不是內部命令。而且此時的java和javac版本是一樣的。(這里不是在C:\Windows\System32下輸入的命令)
6.到system32的路徑下輸入where java,顯示了java命令所在目錄。
7.再次查看java和javac的版本,發現Java和javac版本不一致。
8.在電腦的系統變量中配置path路徑,沒有在C:\Windows\System32下查看Java和Javac版本。發現兩個版本不一致。
9.將path變量中的順序更改,將%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin放在C:\Windows\system32之前,如下圖所示。
10.再次查看java和Javac版本,發現Java和javac版本是一樣的。
4.4總結
4.4.1java和javac版本不一樣的原因
出現Java和Javac版本不一樣的原因是,系統會先到path路徑下按順序找相應文件,而jre1.8.0是在系統所在的路徑下,被優先搜索到,所以使用了C盤下的jre。
4.4.2不能重現問題的原因
我不能重現java和javac版本不一樣問題的原因是,當我在系統環境變量下添加了path路徑,優先搜索D盤下的jre。后來不知道什么操作把C盤下的java.exe等可執行文件刪除了,所以再次刪除path路徑后,執行命令,C盤下已經不存在java.exe等可執行文件了,然后去搜索了D盤下的jre可執行文件。