java maven pom.xml

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.