Gradle ne trouve pas tools.jar

160

J'utilise des doclets javadoc avec gradle, je dois donc utiliser le package tools.jar, qui se trouve dans le dossier lib du jdk (1.6.0_26 dans mon cas).

Le fait est que gradle ne le prend pas automatiquement, donc j'ajoutais ce package d'outils à mon dossier libs, puis je l'ajoutais à dependencies.gradle.

Maintenant, je veux le prendre directement de ma maison JDK dans mon dependencies.gradle. Y-a-t-il un moyen de faire ça? J'ai essayé le suivant dans mes dependencies.gradle:

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

Mais il ne le trouve pas lors de la compilation.

raspayu
la source
2
Il convient de mentionner que, en tant que précurseur pour résoudre ce problème et comme je l'ai rencontré lorsque je l'ai reçu, vous devrez vous assurer que vous avez réellement installé un JDK: P Et, sur certains systèmes, vous besoin d'installer le package devel JDK pour obtenir tools.jar
mrooney

Réponses:

140

J'ai eu ce problème lorsque j'essayais d'exécuter des commandes via CLI.

C'était un problème avec le système regardant le dossier JRE ie D:\Program Files\Java\jre8\bin. Si nous regardons là-dedans, il n'y a pas Tools.jar, d'où l'erreur.

Vous devez trouver où se JDKtrouve, dans mon cas:, D:\Program Files\Java\jdk1.8.0_11et si vous regardez dans le librépertoire, vous verrez Tools.jar.

Ce que j'ai fait, j'ai créé une nouvelle variable d'environnement JAVA_HOME: entrez la description de l'image ici

Et puis vous devez éditer votre variable PATH pour inclure JAVA_HOME, ie %JAVA_HOME%/bin; entrez la description de l'image ici

Rouvrez l'invite de commande et devrait s'exécuter.

benscabbia
la source
15
le tool.jar n'est %JAVA_HOME%\lib;pas dans le bindossier.
GMsoF
5
cela signifie-t-il que nous devrions alors ajouter à la fois %JAVA_HOME%/binet %JAVA_HOME%/libà la Pathvariable?
Eric du
3
Même si tools.jar est bien dans \ lib, ajouter seulement \ bin au chemin comme dans la solution a fonctionné pour moi, mais ne demandez pas pourquoi.
PHPirate
1
Un redémarrage / déconnexion est généralement nécessaire pour que les modifications aient un effet.
reiner_zuphall
4
J'ai dû supprimer l'entrée PATH C: \ ProgramData \ Oracle \ Java \ javapath et la remplacer par C: \ ProgramData \ Oracle \ Java \ jdk1.8.xxx il était par défaut dans le répertoire soeur JRE
John
76

Je l'ai trouvé. La propriété système 'java.home' n'est pas une variable d'environnement JAVA_HOME. JAVA_HOME pointe vers le JDK, tandis que java.home pointe vers le JRE. Consultez cette page pour plus d'informations.

Soo ... Mon problème était que mon point de départ était le dossier jre (C: \ jdk1.6.0_26 \ jre) et non le dossier jdk (C: \ jdk1.6.0_26) comme je le pensais (tools.jar est sur le C : \ jdk1.6.0_26 \ lib dossier). La ligne de compilation dans dependencies.gradle doit être:

compile files("${System.properties['java.home']}/../lib/tools.jar")
raspayu
la source
28
alors, comment mettre java.home en idée avec gradle?
Chinaxing
73

J'ai eu la même erreur en utilisant Eclipse en essayant d'exécuter une tâche Gradle. Chaque fois que j'exécute une commande (c'est-à-dire war), le processus lève une exception comme:

Impossible de trouver tools.jar. Veuillez vérifier que C: \ Program Files \ Java \ Jre8 "est une installation JDK valide.

J'ai essayé la solution répertoriée dans cet article, mais aucune n'a résolu ce problème. Voici ma solution:

  1. Accédez à la vue "Tâche Gradle"
  2. Faites un clic droit sur la tâche que vous souhaitez exécuter
  3. Sélectionnez Open Gradle Run Configuration
  4. Dans l'onglet "Java Home" sélectionnez votre référentiel JDK local puis cliquez sur OK

Courez à nouveau, profitez-en!

Rattek
la source
2
J'ai trouvé cette réponse après des heures de recherche, et cela a finalement fonctionné. Merci beaucoup!
Alan47
5
Je ne trouve pas Open Gradle Run et Java Home. Pouvez-vous expliquer davantage?
Étant nouveau dans ce domaine, comment serait-on "Aller à la vue" Tâche Gradle ""? Je ne vois rien de Gradle dans le menu Affichage, ni rien d'étiqueté comme ça?
Dronz
48

Je viens d'ajouter un gradle.propertiesfichier avec le contenu suivant:

org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_45
Bondehagen
la source
5
Sous Linux, vous pouvez également modifier le ~/.gradle/gradle.propertiesfichier en ajoutant org.gradle.java.home=/usr/lib/jvm/java. Fonctionne pour moi sur Fedora 24.
samsong8610
36

J'ai eu un cas similaire en utilisant Ubuntu . Seul le JRE était installé sur la machine . Donc, je viens d'exécuter la commande ci-dessous pour installer le JDK .

sudo apt install openjdk-8-jdk

Italo Borssatto
la source
1
Oui, l'installation de JDK au lieu de JRE a également résolu le problème pour moi.
peschü
20

J'avais aussi du mal pour cette solution. J'ai trouvé un meilleur moyen d'y parvenir avec Gradle, comme décrit ici . Nous pouvons obtenir les informations JVM / JDK de Gradle lui-même.

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

Si simple.

Mohammed
la source
3
Cela fonctionne pour moi si j'utilise à la compileplace deruntime
Dori
J'aime cette solution. C'est agréable et portable.
Adam Plumb
4
Cette solution ne fonctionne pas avec Gradle 4.x. J'obtiens un NullPointerException.
Thunderforge
1
Je peux l'imaginer renvoyer null quand il n'y a pas de tools.jar disponible avec le dernier JDK. Voir github.com/gradle/gradle/blob/master/subprojects/base-services/…
Mohammed le
17

Dans CentOS7, le package de développement installera tools.jar. Le fichier n'est pas présent dans java-1.8.0-openjdk

sudo yum install java-1.8.0-openjdk-devel

Richard Ginsberg
la source
Merci Richard! Cela m'a vraiment aidé! J'avais du mal à exécuter "react-native run-android" et à obtenir l'erreur: * Ce qui n'a pas fonctionné: l'exécution a échoué pour la tâche ': app: compileDebugJavaWithJavac'. > Impossible de trouver tools.jar. Veuillez vérifier que /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-5.b14.fc27.x86_64/jre contient une installation JDK valide. Maintenant ça marche! Merci encore!
Matheus Gontijo
Merci Richard ... Cela a fonctionné pour moi aussi. Fondamentalement, c'était un problème de chemin JAVA_HOME qui a tenté de trouver tools.jar dans le chemin java jdk souhaité.
rajdeepbs29
16

Ajoutez ceci à gradle.properties:

org.gradle.java.home = C: \ Program Files \ Java \ jdk1.8.0_91

azizbek
la source
7
N'oubliez pas d'utiliser des doubles barres obliques inverses. Par exemple: org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_144\ .
CoolMind
11

C'est peut-être deux ans trop tard, mais j'ai rencontré le même problème récemment et c'est la solution que j'ai trouvée après avoir trouvé ce post :

import javax.tools.ToolProvider

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

Cela devrait fonctionner si java.home pointe vers un répertoire qui ne se trouve pas sous le répertoire JDK et même sur Mac OS où vous auriez classes.jar au lieu de tools.jar.

Andrei LED
la source
Impossible d'appeler la méthode getURLs () sur un objet nul
Ultérieur du
10

Avec Centos 7, j'ai constaté que seul JDK l'a fait tools.jar, contrairement à JRE . J'ai installé le Java 8 JRE ( yum install java-1.8.0-openjdk), mais pas le JDK ( yum install java-1.8.0-openjdk-devel).

L'installation de ce dernier résout le problème. N'oubliez pas non plus de définir JAVA_HOME.

WesternGun
la source
9

Sur Windows 10, je rencontre le même problème et voici comment j'ai résolu le problème;

  1. Accès Advance System Settings>Environment Variables>System Variables
  2. Sélectionnez PATH écraser la valeur par défaut C:\ProgramData\Oracle\Java\javapath
  3. Avec votre propre installation jdk qui est JAVA_HOME =C:\Program Files\Java\jdk1.8.0_162
Dun0523
la source
cela devrait être la réponse acceptée pour Windows :) --merci
Saher Ahwal
6

Sur mon système (Win 10, JRE 1.8.0, Android Studio 3.1.2, Gradle 4.1) il n'y a pas tools.jardans le répertoire JRE ( C:\Program Files\Java\jre1.8.0_171).

Cependant, je l'ai trouvé et j'ai C:\Program Files\Android\Android Studio\jre\libessayé de réglerJAVA_HOME=C:\Program Files\Android\Android Studio\jre

Ça marche pour moi)!

Stefan Densow
la source
Même problème, corrigé pour moi, également Win 10 / Android Studio. En outre, aucune des solutions ci-dessus ne semble réellement télécharger un "Tools.jar" ... ne vient tout simplement pas avec le jre)
Erik Aronesty
A travaillé pour moi aussi. J'ai créé un gradle.properties dans la racine du projet contenantorg.gradle.java.home=E:\\Android Studio\\jre
br4nnigan
3

Linux

Ouvrez /etc/environmentdans n'importe quel éditeur de texte comme nano ou gedit et ajoutez la ligne suivante:

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

les fenêtres

  1. Démarrez l'applet Panneau de configuration système (Démarrer - Paramètres - Panneau de configuration - Système).
  2. Sélectionnez l'onglet Avancé.
  3. Cliquez sur le bouton Variables d'environnement.
  4. Sous Variables système, cliquez sur le bouton Ajouter, puis passez les lignes suivantes:

    dans le nom de la variable: JAVA_HOME

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

    où la x.x_xxxversion jdk vous pouvez obtenir votre version jdk d'iciC:\Program Files\Java

  5. Sous Variables système, sélectionnez Chemin, puis cliquez sur Modifier, puis sur nouveau bouton, puis passez la ligne suivante:

    %JAVA_HOME%/bin;

Mortada Jafar
la source
Les chemins peuvent varier légèrement. Dans Fedora, cela a fonctionné pour moi avecJAVA_HOME="/usr/lib/jvm/java-openjdk"
rvf
3

Cela a fonctionné pour moi:

Je recevais un message

L'exécution a échoué pour la tâche ': app: compileDebugJavaWithJavac'.

Impossible de trouver tools.jar. Veuillez vérifier que C: \ Program Files \ Java \ jre1.8.0_121 contient une installation JDK valide.

  • Dans Android Studio, vérifiez l'emplacement de votre SDK.
  • Fichier, structure du projet, emplacement du SDK, emplacement du JDK.
  • Exemple: C: \ android-studio \ android-studio \ jre
  • Copiez le fichier tools.jar dans le dossier C: \ android-studio \ android-studio \ jre \ lib dans le dossier C: \ Program Files \ Java \ jre1.8.0_121 \ lib.
  • Recommencez.
l'amour en direct
la source
3

Si vous utilisez un terminal pour créer et que vous rencontrez cette erreur, vous pouvez pointer vers jdk fourni avec Android Studio dans votre gradle.propertiesfichier:

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

Comme d' autres réponses que je mis org.gradle.java.home propriété dans gradle.properties fichier. Mais le chemin avec \ séparateurs ne fonctionnait pas (en s'appuyant sur Windows 10):

L'accueil Java fourni via 'org.gradle.java.home' n'est pas valide. Répertoire non valide: C: Program FilesJavajdk1.8.0_65

Donc au lieu de

org.gradle.java.home = C: \ Program Files \ Java \ jdk1.8.0_65

je devais utiliser

org.gradle.java.home = C: / Program Files / Java / jdk1.8.0_65

puis la construction a réussi

Le problème est que le projet est construit avec JRE au lieu de JDK et comme je le construisais à partir d'éclipse, cela fonctionnait également:

  • Dans Fenêtre> Préférences> Gradle> Arguments, spécifiez Workspace JRE et spécifiez votre JDK.
  • Dans Window> Preferences> Java> InstalledJREs, spécifiez votre JDK par défaut
Piro dit réintégrer Monica
la source
2

J'ai résolu le problème de cette façon:

Veljko P.
la source
Dû le copier vers C:\Program Files (x86)\Java\jre1.8.0_211etC:\Program Files (x86)\Java\jre1.8.0_251
TessavWalstijn
1

Vous êtes-vous assuré que tools.jar l'a fait sur le chemin de la classe de compilation? Peut-être que le chemin est incorrect.

task debug << {
    configurations.compile.each { println it }
}
Peter Niederwieser
la source
Oui, il a atteint le chemin de classe, mais le problème persiste.
Abhishek Gupta le
1

L'ajout du chemin JDK via l'onglet JAVA_HOME dans "Open Gradle Run Configuration" résoudra le problème.

Haseena B
la source
0

J'ai essayé la plupart des principales options, mais il semble que j'ai eu un problème avec la configuration de mon environnement, donc elles n'ont pas aidé. Ce qui a résolu le problème pour moi était de réinstaller jdk1.8.0_201 et jre1.8.0_201ce qui a résolu l'erreur pour moi. J'espère que cela aide quelqu'un.

Anton Belev
la source