
Como puede ver, definí JAVA_HOME y M2_HOME para Java y Maven y agregué a la ruta Variables ambientales:
Cuando intento ejecutar el comando java o mvn, funcionan bien en powershell en la terminal de Windows.
mvn en terminal de Windows y PowerShell:
Pero no funciona si abro un nuevo powershell o cmd
¿Alguna idea de por qué están trabajando dentro de la terminal de Windows y no en PowerShell independiente? Si la variable no está ajustada por % % entonces no hay problema, funciona bien. Por ejemplo, en la primera captura de pantalla, nvm funciona bien tanto en el terminal de Windows como en PowerShell.
Respuesta1
Parece que encontró una solución, pero aquí está la razón por la que sucede:
Usted establece JAVA_HOME
y M2_HOME
variables en suusuarioentorno, pero los agregó a susistemaRUTA del entorno. En ese caso, tiene un problema de condición de carrera al configurar las variables de entorno. En Windows, segúnss64:
Cuando se inicia un nuevo proceso, las variables se cargarán en el siguiente orden:
- Variables de entorno del sistema
- Variables de Shell (por usuario)
- Variables de entorno de usuario
- Variables de Shell (otras)
Así que normalmente no puedes configurarusuariovariables de entorno dentrosistemaunos y hacer que se expandan correctamente. Parece que la nueva Terminal de Windows puede comportarse en orden inverso o manejar la expansión de PATH de manera diferente, pero eso no garantiza que otros procesos se comportarán.
Esto es lo que debe buscar:
# 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 se comportará de cualquier manera, según el tipo de terminal que esté utilizando.
Funciona bien si los configuras todos en el mismo entorno, entonces:
- Añade
JAVA_HOME
/M2_HOME
a tuusuarioRUTA y eliminar desistemaRUTA, o - Establecer
JAVA_HOME
comoM2_HOME
sistemavariables en su lugar. (parece que esto funcionó para ti)