我們在把JDK路徑配置為環境變數時,有一個常用的配置方法,就是把JDK根路徑配置為“JAVA_HOME”值,然后在Path中添加一條“%JAVA_HOME%\bin”值,這種方法很便于修改JDK的版本,只要在更換版本時調整JAVA_HOME的內容便可以,但是,這種配置方式往往會引發一個錯誤,下面詳細說明這個錯誤,
錯誤表現
“JAVA_HOME”中不僅可以設定單個值,也可以像Path內容一樣,用分號隔開,設定多個值,例如,計算機中有“9.0.1”和“15.0.1”兩個版本的JDK,我們可以把兩個版本的JDK都添加進“JAVA_HOME”中,如圖:

當然,這樣使用是沒有錯誤的,但是,當我們想要從中洗掉一個值,只留下一個版本時,比如只留下“jdk-15.0.1”,那我們就會點擊第二行,并點擊右邊的洗掉,此時,回到命令列使用java編譯時,我們會發現,剩下的那個版本的jdk也不能被正確定位了,

錯誤溯源
定位到jdk的目錄下,如果可以看到“java.dll”,“java.exe”,“javac.exe”等檔案都是存在的,說明該錯誤的原因不是jdk被破壞,回憶一下剛才洗掉“JAVA_HOME”值的操作,此時再查看“JAVA_HOME”環境變數,并沒有發現什么例外:

但是,打開“Path”環境變數的編輯界面,細心的話可以看到它從串列模式變成了編輯文本的模式:

在“Path”中存在多潭訓境變數的值時,變成編輯文本模式意味著它可能是有錯誤的,重新回到CMD中,輸入echo %Path%命令,把Path環境變數列印到命令列進行查看,可以發現一個明顯的錯誤,如圖:

在箭頭所示的地方,看到jdk的路徑中錯誤地插入了一個分號,說明“%JAVA_PATH%”決議出來的文本串后面帶上了一個分號,重新編輯“JAVA_HOME”環境變數,點擊右下角的“編輯文本”按鈕,在編輯文本模式中,我們發現結尾有一個顯眼的分號:


把這個分號洗掉之后,保存,回到命令列除錯,java命令正常運行了,

解決方法
當存在多潭訓境變數時,系統會自動地以分號分隔開它們,且不會帶來例外,但是,當從多潭訓境變數洗掉到僅剩一條時,系統會遺留下一個分號,我們使用“%JAVA_HOME%\bin”這樣的方式去配置Path時,由于“%JAVA_HOME%”直接決議為文本,遺留的分號就會帶來錯誤,
如果原來的環境變數是多個值,想要洗掉到僅剩一個值時,一定要記得洗掉這個分號,或者直接用編輯文本模式去洗掉,以防止引入不必要的錯誤,

希望這篇文章可以幫助到大家!
附:
系統資訊:版本 Windows 10 專業版
版本號 20H2
作業系統內部版本 19042.867
jdk版本
jdk-15.0.1
jdk-9.0.1
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/272423.html
標籤:Java
