我們在把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