Gradle no encuentra tools.jar

160

Estoy usando javadoc doclets con gradle, así que necesito usar el paquete tools.jar, que está en la carpeta lib de jdk (1.6.0_26 en mi caso).

El punto es que gradle no lo toma automáticamente, así que estaba agregando ese paquete de herramientas a mi carpeta libs, y luego lo agregué a dependencies.gradle.

Ahora quiero llevarlo directamente desde mi hogar JDK a mi dependencies.gradle. ¿Hay una manera de hacer eso? He intentado el siguiente en mi dependencies.gradle:

compile files("${System.properties['java.home']}/lib/tools.jar")

Pero no lo encuentra al compilar.

raspayu
fuente
2
Vale la pena mencionar que, como precursor para resolver esto y como me encontré cuando recibía esto, deberá asegurarse de que realmente tenga un JDK instalado: P Y, en algunos sistemas, necesita instalar el paquete JDK de desarrollo para obtener tools.jar
mrooney

Respuestas:

140

Tuve este problema cuando intentaba ejecutar comandos a través de la CLI.

Fue un problema con el sistema mirando la carpeta JRE, es decir D:\Program Files\Java\jre8\bin. Si miramos allí, no hay Tools.jar, de ahí el error.

Necesita encontrar dónde JDKestá, en mi caso: D:\Program Files\Java\jdk1.8.0_11y si busca en el libdirectorio, verá Tools.jar.

Lo que hice fue crear una nueva variable de entorno JAVA_HOME: ingrese la descripción de la imagen aquí

Y luego necesita editar su variable PATH para incluir JAVA_HOME, es decir %JAVA_HOME%/bin; ingrese la descripción de la imagen aquí

Vuelva a abrir el símbolo del sistema y debería ejecutarse.

benscabbia
fuente
15
tool.jar %JAVA_HOME%\lib;no está en la bincarpeta.
GMsoF
55
¿significa esto que deberíamos agregar ambos %JAVA_HOME%/biny %JAVA_HOME%/liba la Pathvariable entonces?
Eric
3
A pesar de que tools.jar está en \ lib, agregar solo \ bin a la ruta como solución funcionó para mí, pero no pregunte por qué.
PHPirate
1
Por lo general, se requiere reiniciar / cerrar sesión para que los cambios surtan efecto.
reiner_zuphall
44
Tuve que eliminar la entrada PATH C: \ ProgramData \ Oracle \ Java \ javapath y reemplazarla con C: \ ProgramData \ Oracle \ Java \ jdk1.8.xxx estaba predeterminada en el directorio hermano JRE
John
76

Lo encontré. La propiedad del sistema 'java.home' no es una variable de entorno JAVA_HOME. JAVA_HOME apunta al JDK, mientras que java.home apunta al JRE. Vea esa página para más información.

Entonces ... Mi problema era que mi punto de partida era la carpeta jre (C: \ jdk1.6.0_26 \ jre) y no la carpeta jdk (C: \ jdk1.6.0_26) como pensaba (tools.jar está en la C : carpeta \ jdk1.6.0_26 \ lib). La línea de compilación en dependencies.gradle debería ser:

compile files("${System.properties['java.home']}/../lib/tools.jar")
raspayu
fuente
28
Entonces, ¿cómo configurar java.home en idea con gradle?
Chinaxing
73

Recibí el mismo error al usar Eclipse al intentar ejecutar una Tarea Gradle. Cada vez que ejecuto un comando (es decir, guerra), el proceso arrojó una excepción como:

No se pudo encontrar tools.jar. Compruebe que C: \ Archivos de programa \ Java \ Jre8 "es una instalación JDK válida.

Probé la solución que aparece en esta publicación, pero ninguno de ellos resolvió este problema. Aquí mi solución:

  1. Vaya a la vista "Tarea Gradle"
  2. Haga clic derecho en la tarea que desea ejecutar
  3. Seleccione Abrir configuración de ejecución de Gradle
  4. En la pestaña "Inicio de Java", seleccione su repositorio JDK local y luego haga clic en Aceptar

Corre de nuevo, disfruta!

rattek
fuente
2
Encontré esta respuesta después de horas de búsqueda, y finalmente funcionó. Muchas gracias!
Alan47
55
No puedo encontrar Open Gradle Run y ​​Java Home. ¿Puedes explicar más?
Siendo nuevo en esto, ¿cómo podría uno "Ir a la vista" Tarea de Gradle "? No veo nada Gradle en el menú Ver, ni nada etiquetado como ese.
Dronz el
48

Acabo de agregar un gradle.propertiesarchivo con el siguiente contenido:

org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_45
bondehagen
fuente
55
En Linux, también puede editar ~/.gradle/gradle.propertiesarchivos, agregando org.gradle.java.home=/usr/lib/jvm/java. Funciona para mí en Fedora 24.
samsong8610
36

Tuve un caso similar con Ubuntu . La máquina solo tenía el JRE instalado. Entonces, acabo de ejecutar el siguiente comando para instalar el JDK .

sudo apt install openjdk-8-jdk

Italo Borssatto
fuente
1
Sí, instalar JDK en lugar de JRE también resolvió el problema para mí.
peschü
20

También estaba luchando por esta solución. Encontré una mejor manera de hacerlo con Gradle como se describe aquí . Podemos obtener la información de JVM / JDK de Gradle.

dependencies {
   runtime files(org.gradle.internal.jvm.Jvm.current().toolsJar)
}

Tan sencillo.

Mahoma
fuente
3
Esto funciona para mí si lo uso en compilelugar deruntime
Dori
Me gusta esta solución Es agradable y portátil.
Adam Plumb
44
Esta solución no funciona con Gradle 4.x. Me sale un NullPointerException.
Thunderforge
1
Me lo imagino volviendo nulo cuando no hay tools.jar disponible con el último JDK. Ver github.com/gradle/gradle/blob/master/subprojects/base-services/…
Mohammed el
17

En CentOS7, el paquete de desarrollo instalará tools.jar. El archivo no está presente en java-1.8.0-openjdk

sudo yum install java-1.8.0-openjdk-devel

Richard Ginsberg
fuente
Gracias Richard! ¡Realmente me ayudó! Estaba luchando al ejecutar "react-native run-android" y obtenía el error: * Lo que salió mal: La ejecución falló para la tarea ': aplicación: compileDebugJavaWithJavac'. > No se pudo encontrar tools.jar. Verifique que /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-5.b14.fc27.x86_64/jre contenga una instalación JDK válida. ¡Ahora funciona! ¡Gracias de nuevo!
Matheus Gontijo
Gracias Richard ... funcionó para mí también. Básicamente, se trataba de un problema de ruta JAVA_HOME que intentaba encontrar tools.jar en la ruta java jdk deseada.
rajdeepbs29
16

Agregue esto a gradle.properties:

org.gradle.java.home = C: \ Archivos de programa \ Java \ jdk1.8.0_91

azizbekian
fuente
77
No olvides usar barras diagonales dobles. Por ejemplo: org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_144\ .
CoolMind
11

Puede que sea dos años demasiado tarde, pero me encontré con el mismo problema recientemente y esta es la solución que terminé después de encontrar esta publicación :

import javax.tools.ToolProvider

dependencies {
  compile (
    files(((URLClassLoader) ToolProvider.getSystemToolClassLoader()).getURLs()),
    ...
  }
}

Debería funcionar si java.home apunta a un directorio que no está bajo el directorio JDK e incluso en Mac OS donde tendría classes.jar en lugar de tools.jar.

Andrei LED
fuente
No se puede invocar el método getURLs () en un objeto nulo
Ulterior
10

Con Centos 7, descubrí que solo JDK tiene tools.jar, mientras que JRE no . He instalado Java 8 JRE ( yum install java-1.8.0-openjdk), pero no JDK ( yum install java-1.8.0-openjdk-devel).

Instalar este último resuelve el problema. Además, recuerde configurar JAVA_HOME.

WesternGun
fuente
9

En Windows 10, encuentro el mismo problema y así es como solucioné el problema;

  1. Acceso Advance System Settings>Environment Variables>System Variables
  2. Seleccione RUTA sobrescribir el valor predeterminado C:\ProgramData\Oracle\Java\javapath
  3. Con su propia instalación jdk que es JAVA_HOME =C:\Program Files\Java\jdk1.8.0_162
Dun0523
fuente
esta debería ser la respuesta aceptada para Windows :) --gracias
Saher Ahwal
6

En mi sistema (Win 10, JRE 1.8.0, Android Studio 3.1.2, Gradle 4.1) no hay tools.jaren el directorio JRE ( C:\Program Files\Java\jre1.8.0_171).

Sin embargo, lo encontré C:\Program Files\Android\Android Studio\jre\liby traté de configurarJAVA_HOME=C:\Program Files\Android\Android Studio\jre

Funciona para mi)!

Stefan Densow
fuente
El mismo problema, lo arregló para mí, también Win 10 / Android Studio. Además, ninguna de las soluciones anteriores parece descargar un "Tools.jar" ... simplemente no viene con el jre)
Erik Aronesty
A mí también me funcionó. Creé un gradle.properties en la raíz del proyecto que contieneorg.gradle.java.home=E:\\Android Studio\\jre
br4nnigan
3

Linux

Abra /etc/environmenten cualquier editor de texto como nano o gedit y agregue la siguiente línea:

JAVA_HOME="/usr/lib/jvm/open-jdk"

Ventanas

  1. Inicie el subprograma Panel de control del sistema (Inicio - Configuración - Panel de control - Sistema).
  2. Seleccione la pestaña Avanzado.
  3. Haga clic en el botón Variables de entorno.
  4. En Variables del sistema, haga clic en el botón Agregar, luego pase las siguientes líneas:

    en nombre de la variable: JAVA_HOME

    en valor variable: C:\Program Files\Java\jdk1.x.x_xxx

    donde la x.x_xxxversión jdk puede obtener su versión jdk desde aquíC:\Program Files\Java

  5. En Variables del sistema, seleccione Ruta, luego haga clic en Editar, luego haga clic en el botón nuevo y luego pase la siguiente línea:

    %JAVA_HOME%/bin;

Mortada Jafar
fuente
Los caminos pueden variar ligeramente. En Fedora esto funcionó para mí conJAVA_HOME="/usr/lib/jvm/java-openjdk"
rvf
3

Esto funcionó para mí:

Estaba recibiendo un mensaje

Error en la ejecución de la tarea ': aplicación: compileDebugJavaWithJavac'.

No se pudo encontrar tools.jar. Compruebe que C: \ Archivos de programa \ Java \ jre1.8.0_121 contiene una instalación JDK válida.

  • En Android Studio, verifique la ubicación de su SDK.
  • Archivo, Estructura del proyecto, Ubicación del SDK, Ubicación del JDK.
  • Ejemplo: C: \ android-studio \ android-studio \ jre
  • Copie el archivo tools.jar en la carpeta C: \ android-studio \ android-studio \ jre \ lib en la carpeta C: \ Program Files \ Java \ jre1.8.0_121 \ lib.
  • Rever.
vive el amor
fuente
3

Si usa terminal para compilar y tiene este error, puede apuntar a jdk incluido con android studio en su gradle.propertiesarchivo:

org.gradle.java.home=/usr/local/android-studio/jre
Wiktor Wardzichowski
fuente
2

Al igual que otras respuestas puse org.gradle.java.home propiedad en gradle.properties archivo. Pero la ruta con \ separadores no funcionó (compilando en Windows 10):

El inicio de Java suministrado a través de 'org.gradle.java.home' no es válido. Directorio no válido: C: Archivos de programaJavajdk1.8.0_65

Entonces en lugar de

org.gradle.java.home = C: \ Archivos de programa \ Java \ jdk1.8.0_65

tuve que usar

org.gradle.java.home = C: / Archivos de programa / Java / jdk1.8.0_65

entonces la construcción fue exitosa

El problema es que el proyecto se construye con JRE en lugar de JDK y, como lo estaba construyendo desde eclipse, esto también funcionó:

  • En Ventana> Preferencias> Gradle> Argumentos, especifique Workspace JRE y especifique su JDK.
  • En Window> Preferences> Java> InstalledJREs, especifique su JDK como predeterminado
Piro dice reinstalar a Mónica
fuente
2

Resolví el problema de esta manera:

Veljko P.
fuente
Tuve que copiarlo C:\Program Files (x86)\Java\jre1.8.0_211yC:\Program Files (x86)\Java\jre1.8.0_251
TessavWalstijn
1

¿Te aseguraste de que tools.jar llegó a la ruta de la clase de compilación? Tal vez el camino es incorrecto.

task debug << {
    configurations.compile.each { println it }
}
Peter Niederwieser
fuente
Sí, lo hizo a la ruta de clase, pero aún obteniendo el problema.
Abhishek Gupta
1

Agregar la ruta JDK a través de la pestaña JAVA_HOME en "Abrir configuración de ejecución de Gradle" resolverá el problema.

Haseena B
fuente
0

He probado la mayoría de las opciones principales, pero parece que tuve un problema con la configuración de mi entorno, por lo que no me ayudaron. Lo resuelto el problema para mí era volver a instalar jdk1.8.0_201 y jre1.8.0_201y esto resuelve el error para mí. Espero que ayude a alguien.

Anton Belev
fuente