
答案1
看起來您找到了解決方案,但這是發生這種情況的原因:
您在中設定JAVA_HOME
和M2_HOME
變數使用者環境,但將它們添加到您的系統環境路徑。在這種情況下,您在設定環境變數時會遇到競爭條件問題。在 Windows 中,根據SS64:
當一個新進程啟動時,變數將按以下順序載入:
- 系統環境變數
- Shell 變數(每個使用者)
- 使用者環境變數
- Shell 變數(其他)
所以你通常不能設定使用者裡面的環境變數系統並讓它們正確擴展。看起來新的 Windows 終端可能會以相反的順序運作或以不同的方式處理 PATH 擴展,但這並不能保證其他進程也會運作。
以下是要尋找的內容:
# Powershell (core 7.2) terminal:
PS C:\Users\username> $env:path
C:\Program Files\PowerShell\7;%JAVA_HOME%;
# ^Bad, not expanded
# Windows Terminal, running Powershell 7.2:
PS C:\Users\username> $env:path
C:\Program Files\PowerShell\7;C:\Program Files\JavaFolder\jre\bin;
# ^Good
VS Code 會以任何一種方式運行,具體取決於您使用的終端類型。
如果將它們全部設置在同一環境中,則效果很好,因此:
- 添加
JAVA_HOME
/M2_HOME
到您的使用者PATH 並從中刪除系統路徑,或 - 設定
JAVA_HOME
M2_HOME
系統而是變數。 (看起來這對你有用)