No se puede instalar Maven en Windows: "JAVA_HOME está configurado en un directorio no válido"

98

Seguí el tutorial de Maven al pie de la letra, pero todavía no puedo instalar Maven en Windows.

Cuando ejecuto lo siguiente en el símbolo del sistema:

E:\Documents and Settings\zach>mvn --version

Yo obtengo:

'mvn' is not recognized as an internal or external command, operable program or batch file.

Navegué a la carpeta de instalación de maven y ejecuté mvn --versiony obtuve:

E:\java resources\apache-maven-2.2.0\bin>mvn --version
ERROR: JAVA_HOME is set to an invalid directory.
JAVA_HOME = "E:\Sun\SDK\jdk\bin"
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation

pero cuando corro java -versionobtengo:

java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) Client VM (build 14.0-b16, mixed mode)

Entonces tengo Java instalado. ¿Alguien sabe cuál es el problema?

hello_world_infinity
fuente

Respuestas:

172

Los problemas tienen que ver con tus caminos.

  1. Asegúrese de que el directorio "E: \ java resources \ apache-maven-2.2.0 \ bin" esté en la ruta de búsqueda de comandos.

  2. Asegúrese de que la variable JAVA_HOME se refiera al directorio de inicio de su instalación de Java. Si está ejecutando Java desde "E: \ Sun \ SDK \ jdk \ bin", entonces la variable JAVA_HOME debe apuntar a "E: \ Sun \ SDK \ jdk".

    NB: JAVA_HOME NO debe terminar con "\ bin" 1 .

  3. Asegúrese de no haber puesto un punto y coma en la variable JAVA_HOME 2 .

    NB: JAVA_HOME debe ser un nombre de directorio único, no una lista "tipo PATH" de nombres de directorio separados por punto y coma.

También tenga en cuenta que podría tener problemas si ha ignorado este consejo en las instrucciones de Maven en Windows sobre los espacios en los nombres de ruta clave.

"Maven, como muchas herramientas multiplataforma, puede encontrar problemas cuando hay espacios en los nombres de ruta importantes ".

"Necesita instalar Java SDK (por ejemplo, desde el sitio de descarga de Oracle), y debe instalarlo en una ruta sin espacios , como c: \ j2se1.6".

"Necesita desempaquetar la distribución de Maven. No la descomprima en medio de su código fuente; elija una ubicación (¡ sin espacios en la ruta! ) Y descomprímala allí".

El remedio simple para esto sería reinstalar Java o Maven en una ubicación diferente para que no haya un espacio en la ruta.


1 - .... a menos que haya hecho una elección loca para el nombre de su ubicación de instalación.

2 - Aparentemente, una solución "vudú" común a los problemas de ruta de Windows es marcar un punto y coma al final. No se recomienda en general, absolutamente no funciona aquí.

Stephen C
fuente
29

ERROR: JAVA_HOME está configurado en un directorio no válido. JAVA_HOME = "E: \ Sun \ SDK \ jdk \ bin" Establezca la variable JAVA_HOME en su entorno para que coincida con la ubicación de su instalación de Java

JAVA_HOMEdebe establecerse en E:\Sun\SDK\jdk. PATHdebe configurarse para incluir %JAVA_HOME%\bin.

dfa
fuente
13

Me encontré con este problema con una instalación de Grails.

El problema era que mi JAVA_HOME era c:\sun\jdk\y mi PATH tiene%JAVA_HOME%bin

Lo cambié a: JAVA_HOME= "c:\sun\jdk" and PATH="%JAVA_HOME%\bin"

Funcionó después de eso.

L_7337
fuente
10

Estaba enfrentando el mismo problema y acabo de actualizar JAVA_HOME que funcionó para mí.

anteriormente era así: C: \ Archivos de programa \ Java \ jdk1.6.0_45 \ bin Acabo de eliminar el \ bin y funcionó para mí.

user3548196
fuente
4

Debido a las restricciones de seguridad en mi lugar de trabajo actual, no pude configurar las variables de entorno en mi PC con Windows.

Mi solución fue copiar el archivo mvn.bat de% M2% en C: \ WINNT y agregar lo siguiente en la parte superior del archivo por lotes:

@REM Needed as unable to set env variables on my desktop PC.

set MAVEN_OPTS=-Xms256m -Xmx1024m
set M2_HOME=C:\apache-maven-3.0.4
set M2=%M2_HOME%\bin
set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_15
set PATH=%JAVA_HOME%\bin;%M2%;%PATH%

No es la mejor solución, pero funciona. Si alguien tiene alguna otra forma o solución en la que las variables env estándar no se puedan configurar en el sistema, agradecería su respuesta.

theINtoy
fuente
3

Tuve el mismo problema y ninguna de las respuestas anteriores lo solucionó porque mis variables env estaban configuradas. Acababa de reinstalar mi Java.

Lo que funcionó fue

  1. vaya al C:\path\to\apache-maven-3.0.4\biny abra el mvn.batarchivo.
  2. Encuentra la línea que se ve así @SET JAVA_HOME=C:\progra~1\java\jdk1.7.0_03
  3. Corrígelo por el camino correcto

No sé si esto es específico de Windows, ¡pero podría ayudar a alguien!

usuario de codificación
fuente
2

Después de muchos intentos fallidos, encontré la solución.

Era el ";" al final de JAVA_HOME que siempre pongo al final de cada nueva variable que establezco. Así que deshazte del;.

JAVA_HOME lo configuró en Variable de usuario también (sin el ";" por supuesto)

Chinmoy
fuente
1
"... que siempre pongo al final de cada nueva variable que establezco" - ¿Por qué harías eso?
Stephen C
1

debe configurar JAVA_HOME o MAVEN_HOME sin el directorio bin, por ejemplo: - JAVA_HOME = C: \ Archivos de programa (x86) \ Java \ jdk1.7.0_45 - MAVEN_HOME = C: \ Archivos de programa (x86) \ apache-maven-3.1.1 ahora ruta = .....;% MAVEN_HOME% \ bin;% JAVA_HOME% \ bin funciona correctamente

Alireza Alallah
fuente
1

A veces, en Windows, los espacios en blanco en las rutas no se reconocen correctamente

Si tiene un problema de ruta y la ruta parece

c:\Program Files\....

intente cambiarlo en un formato DOS antiguo como

"C:\Progra~1\...

Puede usar dir /xpara verificar la sintaxis correcta (tercera columna)

C:\>dir /x ... 11.01.2008 15:47 <DIR> DOCUME~1 Documents and Settings 01.12.2006 09:10 <DIR> MYPROJ~1 My Projects 21.01.2011 14:08 <DIR> PROGRA~1 Program Files ...

En mi pc JAVA_HOME es (y funciona)

"C:\Progra~1\Java\jdk1.8.0_121"

Probado en Windows 10

Diego Betto
fuente
0

JAVA_HOME debería ser así C: \ PROGRA ~ 1 \ Java \ jdk

¡Espero que esto funcione!

Debasish Rakshit
fuente
0

Esta parece ser una publicación antigua, pero aún así quería compartir cómo se solucionó este problema.

Para los usuarios que no tienen acceso de administrador y cuando abren un símbolo del sistema, se ejecuta bajo el privilegio de usuario. Significa que puede tener una ruta como C: \ Users \

así que al intentar C: \ Users \ XYZ> mvn --version, en realidad busca la ruta JAVA_HOME de las variables de usuario, no de las variables del sistema en las Variables de entorno.

Entonces, para solucionar esto, necesitamos crear una variable de entorno para JAVA_HOME en las variables de usuario.

Espero que esto ayude a alguien.

Maneshwar
fuente
Ermmm ... Las variables de entorno del usuario anulan las variables de entorno del sistema en Windows. Si tiene una variable de entorno de sistema y usuario con el mismo nombre, entonces la variable de usuario "gana", y eso es lo que ve la aplicación.
Stephen C
0

Ejecutar eclipse y también ejecutar Maven requerirá que almacene dos variables de ruta, una en su ubicación jdk1.7_x_x_x y también en su jdk1.7_x_x_ \ bin. Si está utilizando Windows, cuando esté en sus variables de entorno, haga lo siguiente:

1) cree una variable USER llamada JAVA_HOME. Apunta esto a la ubicación de tu archivo JAVA. Por ejemplo: "C: \ Archivos de programa \ Java \ jdk1.7.0_51" (elimine las comillas)

2) en PATH, agregue% JAVA_HOME% a PATH. Esto agregará la ubicación del archivo del paso 1 a su RUTA. Esto es bueno para MAVEN

3) si está utilizando eclipse, necesita que la ruta apunte a "C: \ Archivos de programa \ Java \ jdk1.7.0_51 \ bin". Ahora agregue% JAVA_HOME% \ bin al final de su ruta.

4) su ruta debería verse así: C: \ Archivos de programa (x86) \ Google \ google_appengine \; C: \ Users \ username \ AppData \ Roaming \ npm;% M2%;% JAVA_HOME%;% JAVA_HOME% \ bin

Notas: los elementos que están encerrados en% como% M2% son variables asignadas. Parece redundante pero necesario. Puede confirmar que todo funciona escribiendo:

java -version
javac -version
mvn -version

Cada una de esas tres declaraciones escritas en el indicador de comando no debe devolver errores.

Pulga gruñona
fuente
El paso 2) es incorrecto e innecesario. Ni la cadena de herramientas de Java ni Maven requieren que% JAVA_HOME% esté en la variable "PATH". (No hará ningún daño real , pero tampoco sirve). Referencia: tutorialspoint.com/maven/maven_environment_setup.htm
Stephen C
0

usando windows 10

Estaba enfrentando un problema ... luego eliminé la variable JAVA_HOME por completo y solo agregué% JAVA_HOME% \ bin en PATH y ¡funcionó! para mi

Código espía
fuente
1
Gracias. Funciona después de agregar "/ bin" al final de la variable Java_home
Rahul
-1

¡El JDK ha cambiado las ubicaciones de java.exe entre 1.6 y 1.7!

En mi caso, encontré que JAVA_HOME para el JDK tenía que agregar el \ jre al final. El archivo bat mvn busca java.exe y lo busca en JAVA_HOME \ bin. No está ahí para JDK 1.7; está en JAVA_HOME \ jre \ bin. En JDK 1.6 tal ES en JAVA_HOME \ bin.

Espero que esto ayude a alguien.

Brian Reinhold
fuente
1
Creo que esto es incorrecto. Según la documentación oficial de Oracle para Java 7 ( docs.oracle.com/javase/7/docs/technotes/tools/windows/… ), en una instalación de JDK, el comando "java" aparece tanto en "JAVA_HOME \ bin" como en " JAVA_HOME \ jre \ bin ". Si esto no es así en su instalación, ¡entonces alguien / algo se ha metido con eso!
Stephen C
Interesante. No está en mi directorio / bin, solo en mi / jre / bin. Quizás necesite reinstalar el último JDK
Brian Reinhold
-1

Mi situación fue un poco diferente.

  • JAVA_HOME se configuró correctamente para apuntar a 1.7
  • Otros proyectos de Maven estaban funcionando / construyéndose bien con 1.7 características.
  • PATH se configuró correctamente.
  • Todo estaba actualizado.

Aún así, mi nuevo proyecto simple de Maven no estaba funcionando. Lo que noté fue la diferencia en los registros cuando corrí mvn clean install. Para mis proyectos anteriores de Maven, mostró

[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ oldProject---

Pero para mi nuevo proyecto mostró:

[INFO] --- maven-compiler-plugin:2.0.2:compile (default-compile) @ newProject ---

Entonces, miré POM.xmly noté esto en el POM del proyecto anterior:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
    </plugins>
</build>

Básicamente, este complemento indica qué versión del compilador utilizar para la compilación. Simplemente lo agregué al nuevo proyecto POM.xmly todo funcionó.

Espero que sea útil para alguien.

Bhushan
fuente
Esta no es una respuesta válida a esta pregunta. Los síntomas son diferentes. La solucion es diferente.
Stephen C
-1

Estoy usando Windows 7, el problema que tuve fue simple:

Tenía esto para mi valor de variable de entorno JAVA_HOME:

"C:\Program Files\Java\jdk1.7.0_51;"

cuando quiere:

"C:\Program Files\Java\jdk1.7.0_51"

el punto y coma golpea de nuevo!

:)

Así es como resolví este problema, por lo que esta debería ser una posible solución.

Alexander Mills
fuente