java maven maven-2 hadoop cloudera

java - Construyendo Hadoop con Eclipse/Maven-Artefacto perdido jdk.tools:jdk.tools:jar:1.6



maven-2 cloudera (12)

Estoy tratando de importar org.apache.hadoop de cloudera: hadoop-client: 2.0.0-cdh4.0.0 desde cdh4 maven repo en un proyecto maven en eclipse 3.81, plugin m2e, con jdk de oracle 1.7.0_05 en win7 usando

<dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>2.0.0-cdh4.0.0</version> </dependency>

sin embargo, me sale el siguiente error:

The container ''Maven Dependencies'' references non existing library ''C:/Users/MyUserId/.m2/repository/jdk/tools/jdk.tools/1.6/jdk.tools-1.6.jar''

más específico, maven afirma que falta el siguiente artefacto

Missing artifact jdk.tools:jdk.tools:jar:1.6

¿Cómo resolver esto?


Cambie el conjunto de JRE instalados en su eclipse. Ventana> Preferencias> Java> JRE instalados, cambie la ubicación de jre a% JAVA_HOME% / jre, pero no algo como C: / Program Files / Java / jre7


El problema está en el soporte de Eclipse Maven, la pregunta relacionada está here .

En Eclipse, la variable java.home se establece en el JRE que se utilizó para iniciar Eclipse, no el JRE de compilación. El JRE del sistema predeterminado de C:/Program Files no incluye el JDK, por lo que tools.jar no se encuentra.

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

A continuación, actualice las dependencias de Maven (Alt-F5) (solo actualizar el proyecto no es suficiente).


Esto funcionó para mí:

dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>1.7.0_05</version> <scope>system</scope> <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath> </dependency>


Ok, si estás usando el sistema operativo Windows

  1. Vaya a C: / Archivos de programa / Java / jdk1.8.0_40 / lib (la versión jdk puede ser diferente para usted)

  2. Asegúrese de que tools.jar esté presente (de lo contrario, descárguelo)

  3. Copie esta ruta "C: / Archivos de programa / Java / jdk1.8.0_40"

  4. En pom.xml

    <dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>1.8.0_40</version> <scope>system</scope> <systemPath>C:/Program Files/Java/jdk1.8.0_40/lib/tools.jar</systemPath> </dependency>

  5. ¡Reconstruye y ejecuta! ¡BINGO!


Si jdk.tools está presente en el repositorio .m2. Todavía obtienes el error algo como esto:

Artefacto perdido: jdk.tools ..... c: ... / jre / ..

En el camino de compilación -> configurar compilación -> Bibliotecas. Basta con cambiar la biblioteca del sistema JRE de JRE a JDK.


Si puede vivir sin tools.jar y solo está incluido como una dependencia encadenada, puede excluirlo del proyecto infractor:

<dependency> <groupId>org.apache.ambari</groupId> <artifactId>ambari-metrics-common</artifactId> <version>2.1.0.0</version> <exclusions> <exclusion> <artifactId>jdk.tools</artifactId> <groupId>jdk.tools</groupId> </exclusion> </exclusions> </dependency>


También me enfrenté a este problema porque solo instalé JRE no con JDK . Por lo tanto, agregar la dependencia de jdk.tools no puede corregirme porque tools.jar no existía en mi directorio $ {JAVA_HOME} / lib / .

Ahora descargué e instalé JDK para arreglarlo.


Uso debajo en mi proyecto MR.

<exclusions> <exclusion> <artifactId>jdk.tools</artifactId> <groupId>jdk.tools</groupId> </exclusion> </exclusions>


gracias a npe, agregando

<dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>1.7.0_05</version> <scope>system</scope> <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath> </dependency>

a pom.xml hizo el truco.


tal vez el sistema instale el paquete jdk, pero tal vez algunas herramientas de desarrollo o complemento.

Encuentro este problema en opensuse env. e instalo java-1_6_0-openjdk-devel

el problema se desvaneció ..



jdk.tools:jdk.tools (o com.sun:tools , o lo que sea que lo com.sun:tools ) es un archivo JAR que se distribuye con JDK. Usualmente lo agregas a proyectos como este:

<dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <scope>system</scope> <systemPath>${java.home}/../lib/tools.jar</systemPath> </dependency>

Ver, las preguntas frecuentes de Maven para agregar dependencias a tools.jar

O bien, puede instalar tools.jar manualmente en el repositorio local usando:

mvn install:install-file -DgroupId=jdk.tools -DartifactId=jdk.tools -Dpackaging=jar -Dversion=1.6 -Dfile=tools.jar -DgeneratePom=true

y luego hacer referencia como lo hizo Cloudera, usando:

<dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>1.6</version> </dependency>