
Wie Sie sehen, habe ich JAVA_HOME und M2_HOME für Java und Maven definiert und dem Pfad Umgebungsvariablen hinzugefügt:
Wenn ich versuche, Java- oder MVN-Befehle auszuführen, funktionieren sie in Powershell im Windows-Terminal einwandfrei.
mvn im Windows-Terminal und Powershell:
Funktioniert aber nicht, wenn ich eine neue Powershell oder cmd öffne
Irgendwelche Ideen, warum sie im Windows-Terminal und nicht in der eigenständigen Powershell funktionieren? Wenn die Variable nicht mit % % umschlossen ist, gibt es kein Problem, sie funktioniert einwandfrei. Im ersten Screenshot funktioniert NVM beispielsweise sowohl im Windows-Terminal als auch in der Powershell einwandfrei.
Antwort1
Es sieht so aus, als hätten Sie eine Lösung gefunden. Hier ist der Grund dafür:
Sie legen JAVA_HOME
und M2_HOME
Variablen in IhremBenutzerUmgebung, sondern fügte sie zu IhremSystemUmgebungspfad. In diesem Fall haben Sie ein Race-Condition-Problem beim Festlegen Ihrer Umgebungsvariablen. In Windows, gemäßss64:
Wenn ein neuer Prozess gestartet wird, werden die Variablen in der folgenden Reihenfolge geladen:
- Systemumgebungsvariablen
- Shell-Variablen (pro Benutzer)
- Benutzerumgebungsvariablen
- Shell-Variablen (andere)
Sie können also normalerweise nicht festlegen,BenutzerUmgebungsvariablen innerhalbSystemund lassen Sie sie richtig erweitern. Es scheint, als würde sich das neue Windows-Terminal in umgekehrter Reihenfolge verhalten oder die PATH-Erweiterung anders handhaben, aber das garantiert nicht, dass sich andere Prozesse auch so verhalten.
Achten Sie auf Folgendes:
# 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 verhält sich in beide Richtungen, je nachdem, welchen Terminaltyp Sie verwenden.
Es funktioniert einwandfrei, wenn Sie sie alle in derselben Umgebung einrichten. Also entweder:
- Fügen Sie
JAVA_HOME
/M2_HOME
zu IhremBenutzerPATH und entfernen ausSystemPATH oder - Festlegen
JAVA_HOME
alsM2_HOME
SystemVariablen stattdessen. (sieht aus, als ob das bei Ihnen funktioniert hat)