He estado siguiendo el tutorial de introducción, pero me quedo atascado después de importar el proyecto de playn usando Maven. Estoy usando Eclipse Indigo ejecutándose 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 probé:
Instalación de la última versión de Java 1.6.029 Cambiando mi JAVA_HOME
variable de entorno para que apunte a \program files\Java\jdk1.6_029
Cambiando mis preferencias de Eclipse Java para usar el 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 sobre la solución. Algunas personas dicen que Sun eliminó algo del jdk de 64 bits, otras dicen que debe editar sus archivos xml, muchas personas han dicho que ha cambiado su JAVA_HOME
y otra dijo que debe cambiar las opciones de su máquina virtual 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 marca el 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>
Respuestas:
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 el JDK allí.
Lo que terminé teniendo que hacer (como mencionó en su pregunta) fue modificar la línea de comandos para el acceso directo que uso para iniciar Eclipse para agregarle el argumento -vm así:
-vm "T:\Program Files\Java\jdk1.6.0_26\bin"
Por supuesto, lo ajustaría para que apunte al directorio bin de su instalación de JDK. Lo que esto hace es hacer que Eclipse se ejecute usando el JDK en lugar de JRE, y luego puede encontrar el
tools.jar
archivo 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 sobre JDK (por qué, no lo sé) y busca el primer JRE compatible que encuentra. Y si se sale de las claves de registro de Windows como sugiere la respuesta de Vladiat0r, busca la
HKLM\Software\JavaSoft\Java Runtime Environment
clave primero en lugar de laHKLM\Software\JavaSoft\Java Development Kit
clave.fuente
javaw.exe
a esa ruta también (así que en su totalidad :)-vm "T:\Program Files\Java\jdk1.8.0_66\bin\javaw.exe"
;Tuve el mismo problema mientras desarrollaba una aplicación de servicio web simple, en mi caso tuve que agregar un complemento codehous para obtener las bibliotecas de jaxws. Sin embargo, maven pom siguió preguntando sobre el archivo jar de herramientas.
Tengo que 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 StackOverflow:
Problema de artefacto de Maven 3
<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 tarro de herramientas y funciona. Resumiendo: 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>
fuente
pom.xml
no me funciona.Me encontré con el mismo problema y la forma en que pude resolverlo fue agregar la ubicación de dependencia de
tools.jar
enpom.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 lugar
<systemPath>
donde se encuentre su archivo tools.jar.fuente
Ninguna de las otras respuestas lo hizo por mí. Lo que hizo fue verificar la "jerarquía de dependencia" del pom.xml en eclipse, donde al dar un filtro de 'herramientas' se reveló que tenía una dependencia real a tools.jar:
Entonces, el culpable para mí fue este:
<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 inconvenientes.
fuente
Lo mismo conmigo y 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ó.fuente
-vmargs
línea, ya que cualquier cosa pasada que se interpretará como argumentos de inicio de VM. Entonces: ¡justo antes de ese!-vm
antes de la-vmargs
es la clave. ¡Gracias!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 archivos JAR externos y agregue tools.jar (ubicado en JDK / lib)
fuente
Verifique la versión de JDK en su máquina y en
pom.xml
ambas debe ser la misma<dependency> <groupId>sun.jdk</groupId> <artifactId>tools</artifactId> <version>1.8</version> <scope>system</scope> <systemPath>C:\Program Files\Java\jdk1.8.0_192\lib\tools.jar</systemPath> </dependency>
fuente
Si este problema persiste, puede deberse a un JDK de versión igual o superior a 11.
El
tools.jar
archivo se ha eliminado de la carpeta lib en esos JDK (consulte esta respuesta a una pregunta similar). En ese caso, intente utilizar otras versiones de las bibliotecas que no dependan de lacom.sun:tools
biblioteca.fuente
Después de luchar por un tiempo, finalmente logré que esto funcionara en
eclipse.ini
lugar de la línea de comandos. Después de leer finalmente la documentación, me di cuenta de que el argumento -vm debe estar en una línea separada, sin comillas y antes de cualquier -vmargs:-vm C:\Program Files\Java\jdk1.7.0_45\bin\javaw.exe
fuente
Recibí un error similar. Esto se debe a que JDK no está configurado correctamente en eclipse. Cucumber necesita JDK junto con JRE, así que agregue la siguiente dependencia en su 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>
fuente
En la pestaña POM efectiva de los archivos pom, veo la siguiente ruta de derivación:
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. Luego, 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 playn-samples tiene muchos archivos que es ridículo tener que editar.
¡Estos son los resultados efectivos de POM, que muestran el camino INCORRECTO!
<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>
fuente
Agregue esta dependencia en el archivo pom.xml. Espero que esto ayude.
En la
<systemPath>
propiedad, debe escribir su ruta de acceso 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>
fuente
Terminó usando la corrección de eclipse.ini:
openFile -vm (Your Java Home JDK here)
Por ejemplo
-vm C:\Java\JDK\1.6
,.También tuve que cambiar JRE a JDK:
En Eclipse IDE, vaya a:
fuente
-vm
, coloque la ruta del SDK de Java en la línea nect y coloque todo el-vm
indicador recién agregado antes--vmargs
deleclipse.ini
archivo.Como han dicho otros carteles, el problema aquí tiene que ver con el JRE que está usando eclipse al no poder encontrar el tarro de herramientas. Resolví el problema yendo en una dirección un poco diferente a la que se dijo 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 Java 8 JRE ubicado en C: \ java \ jre1.8.0_45.
A continuación, estoy usando un archivo POM que asume 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 se me permite cambiar el archivo POM, así que tuve que hacer algo de póquer. Copié tools.jar de mi Java 6 JDK, creé el directorio C: \ java \ lib y lo pegué allí. Luego reinicié 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, esto funciona.
fuente
Tuve el mismo problema en Windows 7 y Eclipse 3.7 Logré solucionarlo comenzando
Puede iniciar un cmd y lanzar 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 intenté 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.
fuente
Después de probar todo lo anterior, todavía tenía el mismo problema.
Luego intenté lo siguiente,
Abra un símbolo del sistema y escriba java -version. Me mostró una versión 1.8 de JRE.
Abra un símbolo del sistema y fue a la ubicación del directorio bin de JDK 1.7 y escribió java -version. Esta vez mostró correctamente 1.7.
Luego, después de excavar en algunos lugares, descubrí que, además 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
Cambié las entradas aquí para que apunten al 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 de estos accesos directos eran todos JRE 1.8. ( Este creo que fue el principal problema ) Cambié los atajos para apuntar a los exe JDK correctos.
Una vez hecho todo esto. Abrí eclipse, todos los errores jdk.tools pom.xml desaparecieron.
fuente
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, configurar Eclipse para que se ejecute con mi JDK de 64 bits instalado no funcionó.
La instalación de un JDK de 32 bits y la ejecución de Eclipse resolvió el problema.
Al menos para uno de mis proyectos, otro en el que intenté configurar un JDK en tiempo de ejecución en las propiedades del proyecto Eclipse todavía está roto.
fuente
Resolví el problema desinstalando JRE de mi sistema y dejando solo JDK. Reinstalar JDK no es suficiente porque el instalador de Oracle JDK instala tanto JDK como JRE
Por cierto, me parece que este error es responsable de los problemas: se usa java.home de Eclipse JRE en lugar de la compilación JRE
fuente
En mi caso, estaba ejecutando Maven Build desde Eclipse Run Configurations. Incluso después de cambiar la configuración predeterminada de JRE 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 apuntaba a mi instalación de JRE. Lo cambié para que apunte a la instalación de JDK y luego ejecuté Maven Build. Esta vez funcionó. ingrese la descripción de la imagen aquí
fuente
Entendamos por qué sucedió este problema:
El comando Maven "mvn -version" devuelve el resultado anterior.
Podemos ver que maven obtiene la ruta de tiempo de ejecución de Java como "C: \ Archivos de programa \ Java \ jre1.8.0_221" si no especifica la variable de entorno JAVA_HOME. Y luego maven asume que esta ruta es JAVA_HOME. Es por eso que al construir la aplicación desde el símbolo del sistema o desde cualquier IDE, maven busca el archivo tools.jar en la ruta "% JAVA_HOME% .. \ lib \ tools.jar".
tools.jar está presente en la ruta JDK, por lo que debemos mencionar esto a maven antes de usarlo. Hoy en día, las máquinas se construyen con jre ya disponible, pero jdk solo se requiere para el desarrollo. Esta podría ser la razón por la que maven elige la ruta jre automáticamente.
Para obtener más ayuda, lea el código mvn.cmd disponible en la ruta de instalación de maven.
fuente
El problema es que el sistema no puede encontrar el archivo tools.jar
Entonces, primero verifique que el archivo esté allí en la instalación JDK del directorio.
Haga la siguiente entrada en POM.xml como lo señalaron correctamente otros
<dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.6</version> <scope>system</scope> <systemPath>C:\Program Files\Java\jdk1.8.0_241\lib\tools.jar</systemPath> </dependency>
luego siga los pasos a continuación también para eliminar el problema
1) Haga clic derecho en su proyecto
2) Haga clic en Crear ruta
Según la imagen de abajo, seleccione el espacio de trabajo predeterminado JRE y haga clic en finalizar.
fuente
Cambiar 'JRE instalados' en 'Preferencias -> Java -> JRE instalado' a JDK home funcionó para mí.
FYI: estoy usando JDK 1.8.
fuente
Si está utilizando openjdk, debe instalar el paquete openjdk-6-sdk.
fuente
Cambiar la ubicación relativa de
${java.home}/../lib/tools.jar
la ruta absoluta de lasC:\Program Files\Java\jdk1.6.0_29\lib\tools.jar
obras 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.
fuente