Maven no selecciona JAVA_HOME correctamente
pom.xml (7)
Cuando agrega la variable de entorno JAVA_HOME, si hay espacios en la ruta, debe envolver todo entre comillas.
Estoy en el entorno de Windows y usando maven para compilar mi proyecto. Aunque acabo de crear el proyecto y agregué las dependencias para varias bibliotecas.
Cuando los agregué, maven comenzó a quejarse por las tools.jar
faltantes.jar, así que agregué debajo a mi pom.xml
:
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.6</version>
<scope>system</scope>
<systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>
Cuando ejecuté la instalación de maven, recibí un error del jar faltante, como se muestra a continuación:
[ERROR] Failed to execute goal on project GApp: Could not resolve dependencies for project GApp:GApp:war:0.0.1-SNAPSHOT: Could not find artifact com.sun:tools:jar:1.6 at specified path C:/Program Files/Java/jre6/lib/tools.jar -> [Help 1]
El problema es que tools.jar
está en " C:/Program Files/Java/jdk1.6.0_26/lib
" y está configurado correctamente en la variable de entorno JAVA_HOME
, pero el experto sigue buscando en la carpeta jre como en el mensaje de error " C:/Program Files/Java/jre6/lib/tools.jar
".
C:/>echo %JAVA_HOME%
C:/Program Files/Java/jdk1.6.0_26
Curiosamente, cuando establecí el camino completo en la dependencia, funcionó bien. Pero no quiero codificarlo.
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.6</version>
<scope>system</scope>
<systemPath>C:/Program Files/Java/jdk1.6.0_26/lib/tools.jar</systemPath>
</dependency>
¿Alguien puede sugerir alguna solución dinámica para esto?
Es posible que esté utilizando la instalación incorrecta de Maven. Cambie en Ventana> Preferencias> Maven> Instalaciones. Yo tenía el mío configurado para la instalación de Fedora Maven; volver a cambiarlo a la configuración predeterminada (la versión incrustada en m2e) me solucionó el problema.
Sospecho que lo que estaba causando este problema es que la instalación de Fedora Maven estaba usando OpenJDK de Fedora, lo que probablemente coloca a tools.jar en un lugar extraño (todo sobre OpenJDK de Fedora es extraño y no estándar), por lo que Maven no puede encontrarlo.
Es un error en el soporte de Eclipse Maven. Eclipse no es compatible con todas las propiedades globales de Maven según las especificaciones de Maven .
De acuerdo con las especificaciones:
$ {java.home} especifica la ruta al uso actual del entorno JRE_HOME con rutas relativas para obtener, por ejemplo,
Al menos en Eclipse 4.3.1 ese no es el caso, aquí java.home
siempre apunta al JRE que se utilizó para java.home
Eclipse , no el JRE de compilación.
Para solucionar el problema, debe iniciar Eclipse utilizando el JRE del JDK agregando algo como esto a eclipse.ini
( antes de -vmargs
!):
-vm
C:/<your_path_to_jdk170>/jre/bin/server/jvm.dll
La propiedad Maven $ {java.home} se establece y toma de diferentes lugares dependiendo de su ejecución de Eclipse:
del JRE predeterminado seleccionado para el espacio de trabajo
Ventana> Preferencias> Java> JRE instalados
del proyecto específico de Eclipse,
Ruta de compilación Java> Bibliotecas> Biblioteca del sistema JRE
desde la configuración Ejecutar.
Configuraciones de ejecución> Configuración de ejecución específica> JRE
Recuerde los puntos de ruta de su hogar JRE a un JDK o JRE bajo JDK
NUNCA debes usar las dependencias del alcance del sistema. Todo el código en tools.jar estará disponible solo a través de la JVM en ejecución. Deberías eliminar esta dependencia por completo.
Además, para comprobar qué tiempo de ejecución usa Maven, solo llame
mvn -v
Si todavía tiene una dependencia al jar de herramientas como un problema, una de las dependencias que agregó tiene esa dependencia (y es realmente de mala calidad). Para saber cuál se ejecuta
mvn dependency:tree
o si eso falla, simplemente elimine una dependencia tras otra hasta que desaparezcan los problemas del comando anterior.
Luego, cuando sepa de dónde viene, puede decidir qué hacer a continuación. Una ruta sería usar una exclusión en la dependencia que atraiga las herramientas.
Parece que estás ejecutando Maven en Eclipse. Eclipse no consulta JAVA_HOME.
Asegúrese de haber configurado su JRE en las preferencias de Eclipse en su JDK deseado.
Parece que su JAVA_HOME está configurado para apuntar al JRE en eclipse.