java maven playn

java - Missing artifact com.sun: tools: jar



maven playn (20)

He estado siguiendo el tutorial de inicio, pero estoy atascado después de haber importado el proyecto playn con Maven. Estoy usando Eclipse Indigo corriendo en Windows 7 de 64 bits.

Todos los proyectos importados tienen el mismo error:

Missing Artifact com.sun:tools:jar in all the pom.xml files.

Después de un par de horas de búsqueda en foros, lo intenté:

Instalar el último Java 1.6.029 Cambiar la variable de entorno JAVA_HOME para que apunte a /program files/Java/jdk1.6_029 Cambiar mis preferencias de Eclipse Java para usar JRE jdk1.6_029 .

Realmente me gustaría experimentar con Playn, pero ¿por qué hay algunas publicaciones? Parece que no puedo encontrar una respuesta consensuada a la solución. Algunas personas dicen que Sun eliminó algo del jdk de 64 bits, otros dicen que debes editar tus archivos xml, muchas personas han dicho que JAVA_HOME tu JAVA_HOME , y otro dijo que tienes que cambiar tus opciones de VM para Eclipse.

Cualquier ayuda para aclarar esto sería apreciada, y posiblemente útil para muchos, ya que no tengo una configuración particularmente extraña aquí.

(editar) Aquí está el pom.xml en el primer proyecto. Eclipse indica error en la línea que dice:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.googlecode.playn</groupId> <artifactId>playn-project</artifactId> <version>1.1-SNAPSHOT</version> </parent> <artifactId>playn-android</artifactId> <name>PlayN Android</name> <packaging>jar</packaging> <repositories> </repositories> <dependencies> <dependency> <groupId>com.googlecode.playn</groupId> <artifactId>playn-core</artifactId> <version>${project.version}</version> </dependency> <!-- needed because Android uses the same JSON code as playn-java; that should be factored into a library shared by both backends --> <dependency> <groupId>com.googlecode.playn</groupId> <artifactId>playn-java</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>com.google.android</groupId> <artifactId>android</artifactId> <version>${android.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.1</version> <scope>test</scope> </dependency> </dependencies> <build> <sourceDirectory>src</sourceDirectory> </build> </project>


Acabo de publicar esta pregunta sobre este mismo problema y cómo lo resolví, pero también lo pegaré (y ampliaré) aquí, ya que parece más relevante.

Tuve el mismo problema al usar Eclipse en Windows 7, incluso cuando eliminé el JRE de la lista de JRE en la configuración de Eclipse y solo tenía allí el JDK.

Lo que terminé teniendo que hacer (como mencionaste en tu pregunta) fue modificar la línea de comando para el acceso directo que utilizo para iniciar Eclipse y agregarle el argumento -vm como sigue:

-vm "T:/Program Files/Java/jdk1.6.0_26/bin"

Por supuesto, debe ajustar eso para apuntar al directorio bin de su instalación JDK. Lo que hace esto es provocar que Eclipse se ejecute utilizando el JDK en lugar de JRE, y luego puede encontrar las tools.jar correctamente.

Creo que esto tiene que ver con cómo Eclipse encuentra su JRE predeterminado cuando no se especifica ninguno. Supongo que tiende a preferir JRE a JDK (por qué, no lo sé) y va por el primer JRE compatible que encuentre. Y si se está apagando con las claves de registro de Windows, como sugiere la respuesta de Vladiat0r, primero busca la HKLM/Software/JavaSoft/Java Runtime Environment en lugar de la HKLM/Software/JavaSoft/Java Development Kit .


Agregue esta dependencia en el archivo pom.xml. Espero que esto ayude.
En la propiedad <systemPath> debe escribir su ruta jdk lib ..

<dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.4.2</version> <scope>system</scope> <systemPath>C:/Program Files/Java/jdk1.6.0_30/lib/tools.jar</systemPath> </dependency>


Cambiar la ubicación relativa de ${java.home}/../lib/tools.jar a la ruta absoluta de C:/Program Files/Java/jdk1.6.0_29/lib/tools.jar funciona para mí.

Solo debería tener que cambiarlo en el playn/pom.xml .

Ahora para las muestras de playn, Vladiator tiene razón, son demasiados archivos pom para cambiar.


Como otros carteles han declarado, el problema aquí tiene que ver con el JRE que eclipse está usando no ser capaz de encontrar las herramientas jar. Resolví el problema yendo en una dirección diferente a la que se mencionó anteriormente, y fue por la forma en que mis proyectos y mi entorno.

Eclipse 4.5 requiere al menos Java 7 para el tiempo de ejecución, por lo que tengo la configuración de mi sistema para usar un JRE Java 8 ubicado en C: / java / jre1.8.0_45.

A continuación, estoy usando un archivo POM que supone que estoy ejecutando un Java 6 JDK.

<profiles> <profile> <id>default-profile</id> <activation> <activeByDefault>true</activeByDefault> <file> <exists>${java.home}/../lib/tools.jar</exists> </file> </activation> <properties> <toolsjar>${java.home}/../lib/tools.jar</toolsjar> </properties> </profile> <profile> <id>osx_profile</id> <activation> <activeByDefault>false</activeByDefault> <os> <family>mac</family> </os> </activation> <properties> <toolsjar>${java.home}/../Classes/classes.jar</toolsjar> </properties> </profile> </profiles> <dependencies> <dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.6.0</version> <scope>system</scope> <systemPath>${toolsjar}</systemPath> </dependency> </dependencies>

No tengo permiso para cambiar el archivo POM, así que tuve que hacer algunos pokery jiggery. Copié tools.jar de Java 6 JDK, creé el directorio C: / java / lib y lo pegué allí. Luego reinicié el eclipse y limpié mi proyecto. Y los errores de VOILA se han ido.

No es una solución elegante, y creo que la solución adecuada sería cambiar la forma en que se configura el POM, pero como no pude hacerlo, esto funciona.


Compruebe la versión jdk en su máquina y en pom.xml ambos deben ser iguales

<dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.8</version> <scope>system</scope> <systemPath>C:/Program Files/Java/jdk1.8.0_60/lib/tools.jar</systemPath> </dependency>


Después de luchar por un tiempo finalmente conseguí que esto funcionara con eclipse.ini lugar de con la línea de comando. Después de leer finalmente la documentation me di cuenta de que el argumento -vm debe estar en una línea separada, sin comillas, y delante de cualquier -vmargs:

-vm C:/Program Files/Java/jdk1.7.0_45/bin/javaw.exe


Después de probar todo lo anterior, todavía tenía el mismo problema.

  • La variable de entorno PATH apunta a JDK 1.7 / bin
  • La variable de entorno JAVA_HOME se apuntó al JDK 1.7
  • Mi eclipse.ini tenía la entrada javaw -vm apuntando a JDK 1.7
  • Mi preferencia de eclipse tenía JDK 1.7 como el JRE instalado.
  • La ruta de compilación de mi proyecto utilizaba JDK 1.7.

Luego probé lo siguiente,

  • Abra un símbolo del sistema y escriba java -version. Me mostró una versión de JRE 1.8.

  • Abra un símbolo del sistema y vaya a la ubicación del directorio JDK 1.7 bin y escriba java -version. Esta vez mostró correctamente 1.7.

Luego, después de excavar en algunos lugares, encontré que, aparte de las ubicaciones anteriores, hay ubicaciones adicionales para el tiempo de ejecución de Java.

Registro

También hay una clave de registro donde se especifica la ubicación de JRE en

HKLM / Software / Javasoft / Version

Cambié las entradas aquí para señalar el JDK 1.7

ProgramData

El directorio "C: / ProgramData / Oracle / Java / javapath" está presente en la variable de entorno PATH y contiene accesos directos a java, javaw, etc. El destino para estos accesos directos era JRE 1.8. ( Este creo que fue el problema principal ) Cambié los accesos directos para apuntar a los JDK correctos.

Una vez que todo esto fue hecho. Abrí eclipse todos los errores jdk.tools pom.xml desaparecieron.


En la pestaña POM efectiva de los archivos pom, veo la siguiente ruta derivada: C:/Program Files/Java/jre6/../lib/tools.jar y creo que no es una ruta válida en Windows. Intenté copiar tools.jar en la carpeta jre6 / lib y en Java / lib sin éxito.

El valor "C: / Archivos de programa / Java / jre6" proviene del registro

HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment/1.6.0_30 HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment/1.6

Y configure la clave JavaHome donde está instalado su jdk JRE. Entonces todos los errores del compilador desaparecieron.

Reinstalar el JDK no lo solucionó. Establecer la variable de entorno del sistema JAVA_HOME o java.home no ayudó.

La otra alternativa que he visto es agregar la dependencia con la ruta correcta en cada archivo pom xml, pero el playn-samples tiene muchos archivos que es un dolor ridículo que debe editarse.

¡Estos son los resultados efectivos de POM, que muestran la ruta INCORRECTA!

<dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.6</version> <scope>system</scope> <systemPath>C:/Program Files/Java/jre6/../lib/tools.jar</systemPath> <optional>true</optional> </dependency>


En mi caso, estaba ejecutando Maven Build desde Eclipse Run Configurations. Incluso después de cambiar la configuración JRE predeterminada para que apunte a la carpeta de instalación de JDK, el problema no se solucionó. La razón es que hay una pestaña JRE en Maven Build - Run Configuration (ver la imagen a continuación). Y todavía estaba apuntando a mi instalación de JRE. Lo cambié para apuntar a la instalación de JDK y luego ejecuté Maven Build. Esta vez, funcionó. enter image description here


Lo mismo para mí y para Windows 7. Terminé agregando dos líneas a eclipse.ini :

-vm C:/Program Files/Java/jdk1.6.0_35/bin

Intenté usar %JAVA_HOME% allí, pero no funcionó.


Me encontré con el mismo problema y la forma en que pude resolverlo fue agregar la ubicación de dependencia de tools.jar al pom.xml . Al igual que:

<dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.6</version> <scope>system</scope> <systemPath>C:/Program Files/Java/jdk1.6.0_29/lib/tools.jar</systemPath> </dependency>

Asegúrese de cambiar el <systemPath> dondequiera que se encuentre su archivo tools.jar.


Ninguna de las otras respuestas lo hizo por mí. Lo que hizo fue verificar la "jerarquía de dependencias" del pom.xml en eclipse, donde dar un filtro de "herramientas" reveló que tenía una verdadera dependencia de tools.jar:

Entonces el culpable para mí fue esto:

<dependency> <groupId>com.github.markusbernhardt</groupId> <artifactId>robotframework-selenium2library-java</artifactId> <version>1.4.0.7</version> <scope>test</scope> </dependency>

Agregar una exclusión lo solucionó:

<dependency> <groupId>com.github.markusbernhardt</groupId> <artifactId>robotframework-selenium2library-java</artifactId> <version>1.4.0.7</version> <scope>test</scope> <exclusions> <exclusion> <artifactId>tools</artifactId> <groupId>com.sun</groupId> </exclusion> </exclusions> </dependency>

La exclusión no parece tener ningún inconveniente.



Resolví este problema en la configuración de Eclipse 4.3, solo agregando bibliotecas JDK a las bibliotecas de JRE.

Vaya a Windows -> configuración -> Java -> JRE instalados -> seleccione JDK y haga clic en Editar -> haga clic en Agregar JAR externos y agregue tools.jar (ubicado en JDK / lib)


Si está utilizando openjdk, entonces necesita instalar el paquete openjdk-6-sdk.


Tengo este problema y resulta que JBossDevStudio 9.1 en Windows es un programa de 32 bits. Eclipse, y por lo tanto JBossDevStudio, no funciona con el tipo incorrecto de JVM. El eclipse de 64 bits necesita una JVM de 64 bits, el eclipse de 32 bits necesita una JVM de 32 bits. Por lo tanto, la configuración de Eclipse para ejecutar con mi JDK de 64 bits instalado no funcionó.

Instalar un JDK de 32 bits y ejecutar Eclipse resuelve el problema.

Al menos para uno de mis proyectos, otro que intenté configurar un JDK en tiempo de ejecución en las propiedades del proyecto Eclipse todavía está roto.


Tengo un error similar. Esto se debe a que JDK no está configurado correctamente en eclipse. El pepino necesita JDK junto con JRE, así que agrega la dependencia a continuación en tu pom.xml

<dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.6</version> <scope>system</scope> <systemPath>C:/Program Files/Java/jdk1.8.0_101/lib/tools.jar</systemPath> </dependency>


Terminó usando la corrección eclipse.ini:

openFile -vm (Your Java Home JDK here)

Por ejemplo, -vm C:/Java/JDK/1.6 .

Tuvo que cambiar JRE a JDK:

En Eclipse IDE ve a:

  1. Ventana -> Preferencias -> JRE instalados
  2. Haga clic en Agregar (para ubicar el JRE nuevo)
  3. Seleccione JVM estándar -> siguiente
  4. Haga clic en Directorio para ubicar JRE en casa, coloque JDK_INSTALL_LOCATION y termine.
  5. Vaya a Propiedades de su proyecto java -> Ruta de compilación Java -> Bibliotecas -> seleccione JRE -> Editar -> seleccione JRE de espacio de trabajo predeterminado -> finalice
  6. Haga una limpieza completa del espacio de trabajo con project -> clean.

Tuve el mismo problema al desarrollar una aplicación de servicio web simple, en mi caso tuve que agregar un complemento codehous para obtener las bibliotecas jaxws. Sin embargo, maven pom siguió preguntando sobre el archivo jar de herramientas.

Debo decir que los comentarios anteriores son correctos, puede incluir la siguiente entrada en el archivo pom:

<dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.6</version> <scope>system</scope> <systemPath>C:/Program Files/Java/jdk1.6.0_29/lib/tools.jar</systemPath> </dependency>

Pero, ¿qué pasará cuando tenga que implementar en una instancia de producción? Podría reemplazar la ruta con una referencia a una variable de entorno del sistema, pero eso aún no se ve bien, al menos para mí.

Encontré otra solución en un comentario de :

Maven 3 problema de artefactos

<dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>${struts2.version}</version> <exclusions> <exclusion> <artifactId>tools</artifactId> <groupId>com.sun</groupId> </exclusion> </exclusions> </dependency>

Sugieren incluir una declaración de exclusión para el jar de herramienta y funciona. Para resumir: puede incluir una regla de exclusión dentro de su dependencia y evitar tener el problema tool.jar:

<exclusions> <exclusion> <artifactId>tools</artifactId> <groupId>com.sun</groupId> </exclusion> </exclusions>


Tuve el mismo problema en un Windows 7 y Eclipse 3.7 logré solucionarlo iniciando

eclipse.exe -vm "D: / JDK6 / bin"

Puede iniciar un cmd y lanzar un eclipse así, o puede editar su acceso directo y agregar -vm "D: / JDK6 / bin" como argumento en la "sección de destino".

Como nota al margen, también traté de agregar -vm "D: / JDK6 / bin" a eclipse.ini pero no funcionó. Y agregar JRE6 no funcionará, ya que NO contiene tools.jar en su directorio "lib". Solo JDK lo hace.