Gradle findet tools.jar nicht

160

Ich verwende Javadoc-Doclets mit Gradle, daher muss ich das Paket tools.jar verwenden, das sich im Ordner lib des JDK befindet (in meinem Fall 1.6.0_26).

Der Punkt ist, dass gradle es nicht automatisch nimmt, also habe ich dieses Tools-Paket zu meinem libs-Ordner hinzugefügt und es dann zu dependencies.gradle hinzugefügt.

Jetzt möchte ich es direkt von meinem JDK nach Hause in mein dependencies.gradle übernehmen. Gibt es eine Möglichkeit, das zu tun? Ich habe das nächste in meinem dependencies.gradle versucht:

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

Beim Kompilieren wird es jedoch nicht gefunden.

raspayu
quelle
2
Es ist erwähnenswert, dass Sie als Vorläufer für die Lösung dieses Problems und als ich darauf stieß, sicherstellen müssen, dass tatsächlich ein JDK installiert ist: P Und auf einigen Systemen auch müssen das Entwicklungs-JDK-Paket installieren, um tools.jar
mrooney

Antworten:

140

Ich hatte dieses Problem, als ich versuchte, Befehle über die CLI auszuführen.

Es war ein Problem mit dem System, das den JRE-Ordner betrachtete, d D:\Program Files\Java\jre8\bin. H. Wenn wir dort hineinschauen, gibt es keine Tools.jar, daher der Fehler.

Sie müssen herausfinden, wo sich das JDKbefindet, in meinem Fall : D:\Program Files\Java\jdk1.8.0_11, und wenn Sie in das libVerzeichnis schauen , werden Sie sehen Tools.jar.

Was ich getan habe Ich habe eine neue Umgebungsvariable erstellt JAVA_HOME: Geben Sie hier die Bildbeschreibung ein

Und dann müssen Sie Ihre PATH-Variable so bearbeiten, dass sie JAVA_HOME enthält, d. H. %JAVA_HOME%/bin; Geben Sie hier die Bildbeschreibung ein

Öffnen Sie die Eingabeaufforderung erneut und sollte ausgeführt werden.

Benscabbia
quelle
15
Die Datei tool.jar befindet sich %JAVA_HOME%\lib;nicht im binOrdner.
GMsoF
5
Bedeutet dies, dass wir dann beide %JAVA_HOME%/binund %JAVA_HOME%/libzur PathVariablen hinzufügen sollten ?
Eric
3
Obwohl sich tools.jar tatsächlich in \ lib befindet, hat das Hinzufügen von \ bin zum Pfad wie in der Lösung für mich funktioniert, aber fragen Sie nicht warum.
PHPirate
1
Normalerweise ist ein Neustart / Abmelden erforderlich, damit Änderungen wirksam werden.
reiner_zuphall
4
Ich musste den PATH-Eintrag C: \ ProgramData \ Oracle \ Java \ javapath entfernen und durch C: \ ProgramData \ Oracle \ Java \ jdk1.8.xxx ersetzen. Standardmäßig wurde das Schwester-JRE-Verzeichnis verwendet
John
76

Fand es. Die Systemeigenschaft 'java.home' ist keine Umgebungsvariable JAVA_HOME. JAVA_HOME zeigt auf das JDK, während java.home auf das JRE zeigt. Weitere Informationen finden Sie auf dieser Seite .

Soo ... Mein Problem war, dass mein Startpunkt der Ordner jre (C: \ jdk1.6.0_26 \ jre) und nicht der Ordner jdk (C: \ jdk1.6.0_26) war, wie ich dachte (tools.jar befindet sich auf dem C. : \ jdk1.6.0_26 \ lib Ordner). Die Kompilierungszeile in dependencies.gradle sollte lauten:

compile files("${System.properties['java.home']}/../lib/tools.jar")
raspayu
quelle
28
Also, wie kann man java.home mit gradle in die Idee bringen?
Chinaxing
73

Ich habe den gleichen Fehler mit Eclipse beim Versuch, eine Gradle-Aufgabe auszuführen, erhalten. Jedes Mal, wenn ich einen Befehl (dh Krieg) ausführe, hat der Prozess eine Ausnahme ausgelöst wie:

Tools.jar konnte nicht gefunden werden. Bitte überprüfen Sie, ob C: \ Programme \ Java \ Jre8 "eine gültige JDK-Installation ist.

Ich habe die in diesem Beitrag aufgeführte Lösung ausprobiert, aber keine von ihnen hat dieses Problem gelöst. Hier meine Lösung:

  1. Gehen Sie zur Ansicht "Gradle Task"
  2. Klicken Sie mit der rechten Maustaste auf die Aufgabe, die Sie ausführen möchten
  3. Wählen Sie Open Gradle Run Configuration
  4. Wählen Sie auf der Registerkarte "Java Home" Ihr lokales JDK-Repository aus und klicken Sie auf OK

Lauf nochmal, viel Spaß!

Rattek
quelle
2
Ich habe diese Antwort nach stundenlangem Suchen gefunden und sie hat endlich funktioniert. Ich danke dir sehr!
Alan47
5
Ich kann Open Gradle Run und Java Home nicht finden. Kannst du es weiter erklären?
Wie würde man, wenn man neu in diesem Bereich ist, zur Ansicht "Gradle Task" wechseln? Ich sehe im Menü "Ansicht" weder Gradle noch so etwas?
Dronz
48

Ich habe gerade eine gradle.propertiesDatei mit folgendem Inhalt hinzugefügt :

org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_45
Bondehagen
quelle
5
Unter Linux können Sie auch ~/.gradle/gradle.propertiesDateien bearbeiten und hinzufügen org.gradle.java.home=/usr/lib/jvm/java. Funktioniert für mich auf Fedora 24.
samsong8610
36

Ich hatte einen ähnlichen Fall mit Ubuntu . Auf der Maschine war nur die JRE installiert. Also habe ich gerade den folgenden Befehl ausgeführt, um das JDK zu installieren .

sudo apt install openjdk-8-jdk

Italo Borssatto
quelle
1
Ja, die Installation von JDK anstelle von JRE hat das Problem auch für mich gelöst.
Peschü
20

Ich habe auch um diese Lösung gekämpft. Mit Gradle einen besseren Weg gefunden, wie hier beschrieben . Wir können die JVM / JDK-Informationen von Gradle selbst erhalten.

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

So einfach.

Mohammed
quelle
3
Dies funktioniert für mich, wenn ich compileanstelle vonruntime
Dori
Ich mag diese Lösung. Es ist schön und tragbar.
Adam Plumb
4
Diese Lösung funktioniert nicht mit Gradle 4.x. Ich bekomme eine NullPointerException.
Thunderforge
1
Ich kann mir vorstellen, dass es null zurückgibt, wenn mit dem neuesten JDK keine tools.jar verfügbar ist. Siehe github.com/gradle/gradle/blob/master/subprojects/base-services/…
Mohammed
17

In CentOS7 installiert das Entwicklungspaket tools.jar. Die Datei ist in java-1.8.0-openjdk nicht vorhanden

sudo yum install java-1.8.0-openjdk-devel

Richard Ginsberg
quelle
Danke Richard! Es hat mir wirklich geholfen! Ich hatte Probleme beim Ausführen von "react-native run-android" und bekam den Fehler: * Was ist schief gelaufen: Die Ausführung der Aufgabe ': app: compileDebugJavaWithJavac' ist fehlgeschlagen. > Tools.jar konnte nicht gefunden werden. Bitte überprüfen Sie, ob /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-5.b14.fc27.x86_64/jre eine gültige JDK-Installation enthält. Jetzt geht es! Danke noch einmal!
Matheus Gontijo
Danke Richard. Es hat auch bei mir funktioniert. Grundsätzlich war es ein JAVA_HOME-Pfadproblem, bei dem versucht wurde, tools.jar im gewünschten Java-JDK-Pfad zu finden.
Rajdeepbs29
16

Fügen Sie dies hinzu zu gradle.properties:

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

Azizbekian
quelle
7
Vergessen Sie nicht, doppelte Schrägstriche zu verwenden. Zum Beispiel : org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_144\ .
CoolMind
11

Es mag zwei Jahre zu spät sein, aber ich bin kürzlich auf dasselbe Problem gestoßen, und dies ist die Lösung, die ich gefunden habe, nachdem ich diesen Beitrag gefunden habe :

import javax.tools.ToolProvider

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

Es sollte funktionieren, wenn java.home auf ein Verzeichnis verweist, das sich nicht im JDK-Verzeichnis befindet, und sogar unter Mac OS, wo Sie classes.jar anstelle von tools.jar haben würden.

Andrei LED
quelle
Die Methode getURLs () kann für ein Nullobjekt nicht aufgerufen werden
Ulterior
10

Mit Centos 7 habe ich festgestellt, dass nur JDK hat tools.jar, während JRE nicht hat . Ich habe Java 8 JRE ( yum install java-1.8.0-openjdk) installiert , aber nicht JDK ( yum install java-1.8.0-openjdk-devel).

Die Installation des letzteren löst das Problem. Denken Sie auch daran, einzustellen JAVA_HOME.

WesternGun
quelle
9

Unter Windows 10 tritt das gleiche Problem auf, und so habe ich das Problem behoben.

  1. Zugriff Advance System Settings>Environment Variables>System Variables
  2. Wählen Sie PATH, um die Standardeinstellung zu überschreiben C:\ProgramData\Oracle\Java\javapath
  3. Mit Ihrer eigenen JDK-Installation ist das JAVA_HOME =C:\Program Files\Java\jdk1.8.0_162
Dun0523
quelle
Dies sollte die akzeptierte Antwort für Windows sein :)
Saher Ahwal
6

Auf meinem System (Win 10, JRE 1.8.0, Android Studio 3.1.2, Gradle 4.1) befindet sich keine tools.jarim JRE-Verzeichnis ( C:\Program Files\Java\jre1.8.0_171).

Ich fand es jedoch in C:\Program Files\Android\Android Studio\jre\libund versuchte es einzustellenJAVA_HOME=C:\Program Files\Android\Android Studio\jre

Das ist für mich in Ordnung)!

Stefan Densow
quelle
Gleiches Problem, behoben für mich, auch Win 10 / Android Studio. Außerdem scheint keine der oben genannten Lösungen tatsächlich eine "Tools.jar" herunterzuladen ... kommt einfach nicht mit dem jre)
Erik Aronesty
Hat auch für mich gearbeitet. Ich habe eine gradle.properties im Projektstamm erstellt, dieorg.gradle.java.home=E:\\Android Studio\\jre
br4nnigan
3

Linux

Öffnen Sie /etc/environmentin einem beliebigen Texteditor wie nano oder gedit und fügen Sie die folgende Zeile hinzu:

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

Windows

  1. Starten Sie das Applet System Control Panel (Start - Einstellungen - Systemsteuerung - System).
  2. Wählen Sie die Registerkarte Erweitert.
  3. Klicken Sie auf die Schaltfläche Umgebungsvariablen.
  4. Klicken Sie unter Systemvariablen auf die Schaltfläche Hinzufügen und dann auf die folgenden Zeilen:

    im Variablennamen: JAVA_HOME

    im variablen Wert: C:\Program Files\Java\jdk1.x.x_xxx

    Wo x.x_xxxJDK-Version können Sie Ihre JDK-Version von hier bekommenC:\Program Files\Java

  5. Wählen Sie unter Systemvariablen die Option Pfad aus, klicken Sie auf Bearbeiten, dann auf die Schaltfläche Neu und dann über die folgende Zeile hinaus:

    %JAVA_HOME%/bin;

Mortada Jafar
quelle
Die Pfade können leicht variieren. In Fedora funktionierte dies für mich mitJAVA_HOME="/usr/lib/jvm/java-openjdk"
rvf
3

Das hat bei mir funktioniert:

Ich bekam eine Nachricht

Ausführung für Task ': app: compileDebugJavaWithJavac' fehlgeschlagen.

Tools.jar konnte nicht gefunden werden. Überprüfen Sie, ob C: \ Programme \ Java \ jre1.8.0_121 eine gültige JDK-Installation enthält.

  • Überprüfen Sie in Android Studio Ihren SDK-Speicherort.
  • Datei, Projektstruktur, SDK-Speicherort, JDK-Speicherort.
  • Beispiel: C: \ android-studio \ android-studio \ jre
  • Kopieren Sie die Datei tools.jar im Ordner C: \ android-studio \ android-studio \ jre \ lib in den Ordner C: \ Programme \ Java \ jre1.8.0_121 \ lib.
  • Wiederholen.
Live-Liebe
quelle
3

Wenn Sie Terminal zum Erstellen verwenden und diesen Fehler haben, können Sie in Ihrer gradle.propertiesDatei auf jdk verweisen, das mit Android Studio gebündelt ist :

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

Wie andere Antworten stelle ich org.gradle.java.home Eigenschaft in gradle.properties Datei. Der Pfad mit \ Trennzeichen funktionierte jedoch nicht (basierend auf Windows 10):

Das über 'org.gradle.java.home' bereitgestellte Java-Home ist ungültig. Ungültiges Verzeichnis: C: Program FilesJavajdk1.8.0_65

Also statt

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

ich musste benutzen

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

dann war der Build erfolgreich

Das Problem ist, dass das Projekt mit JRE anstelle von JDK erstellt wird. Da ich es aus Eclipse erstellt habe, hat dies auch funktioniert:

  • Geben Sie unter Fenster> Einstellungen> Gradle> Argumente Workspace JRE und Ihr JDK an.
  • Geben Sie unter Fenster> Einstellungen> Java> Installierte JREs Ihr JDK als Standard an
Piro sagt Reinstate Monica
quelle
2

Ich habe das Problem auf diese Weise gelöst:

Veljko P.
quelle
Musste es kopieren C:\Program Files (x86)\Java\jre1.8.0_211undC:\Program Files (x86)\Java\jre1.8.0_251
TessavWalstijn
1

Haben Sie sichergestellt, dass tools.jar es im Pfad der Kompilierungsklasse geschafft hat? Möglicherweise ist der Pfad falsch.

task debug << {
    configurations.compile.each { println it }
}
Peter Niederwieser
quelle
Ja, es hat es bis zum Klassenpfad geschafft, aber es ist immer noch das Problem.
Abhishek Gupta
1

Durch Hinzufügen eines JDK-Pfads über die Registerkarte JAVA_HOME in "Open Gradle Run Configuration" wird das Problem behoben.

Haseena B.
quelle
0

Ich habe die meisten der Top-Optionen ausprobiert, aber es scheint, dass etwas mit meiner Umgebung nicht stimmt, sodass sie nicht geholfen haben. Was für mich das Problem gelöst war, erneut zu installieren jdk1.8.0_201 und jre1.8.0_201und diese die Fehler für mich gelöst. Hoffe das hilft jemandem.

Anton Belev
quelle