Gradle nie znajduje tools.jar

160

Używam doclets javadoc z gradle, więc muszę użyć pakietu tools.jar, który znajduje się w folderze lib z jdk (w moim przypadku 1.6.0_26).

Chodzi o to, że gradle nie bierze tego automatycznie, więc dodawałem ten pakiet narzędzi do mojego folderu libs, a następnie dodawałem go do dependencies.gradle.

Teraz chcę go zabrać bezpośrednio z mojego domu JDK do moich zależności. Czy jest na to sposób? Próbowałem następnego w moich zależnościach. Stopień:

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

Ale nie znajduje go podczas kompilacji.

raspayu
źródło
2
Warto wspomnieć, że jako kursor wstępny do rozwiązania tego problemu i gdy natknąłem się na to, musisz się upewnić, że masz faktycznie zainstalowany JDK: P I w niektórych systemach będziesz trzeba zainstalować pakiet deweloperski JDK, aby pobrać tools.jar
mrooney.

Odpowiedzi:

140

Miałem ten problem, gdy próbowałem uruchamiać polecenia przez CLI.

Był to problem z przeglądaniem przez system folderu JRE, tj D:\Program Files\Java\jre8\bin. Jeśli tam zajrzymy, nie ma Tools.jar, stąd błąd.

Musisz znaleźć, gdzie JDKjest, w moim przypadku: D:\Program Files\Java\jdk1.8.0_11i jeśli zajrzysz do libkatalogu, zobaczysz Tools.jar.

Co zrobiłem, stworzyłem nową zmienną środowiskową JAVA_HOME: wprowadź opis obrazu tutaj

Następnie musisz edytować zmienną PATH, aby zawierała JAVA_HOME, tj %JAVA_HOME%/bin; wprowadź opis obrazu tutaj

Otwórz ponownie wiersz polecenia i powinien zostać uruchomiony.

benscabbia
źródło
15
plik tool.jar %JAVA_HOME%\lib;nie znajduje się w binfolderze.
GMsoF,
5
czy to oznacza, że ​​powinniśmy wtedy dodawać zarówno do zmiennej, jak %JAVA_HOME%/bini %JAVA_HOME%/libdo Pathzmiennej?
Eric
3
Mimo że tools.jar rzeczywiście znajduje się w \ lib, dodanie tylko \ bin do ścieżki, jak w rozwiązaniu, zadziałało, ale nie pytaj dlaczego.
PHPirate
1
Zwykle wymagane jest ponowne uruchomienie / wylogowanie, aby zmiany odniosły skutek.
reiner_zuphall
4
Musiałem usunąć wpis PATH C: \ ProgramData \ Oracle \ Java \ javapath i zastąpić go C: \ ProgramData \ Oracle \ Java \ jdk1.8.xxx, domyślnie był to siostrzany katalog JRE
Jan
76

Znalazłem to. Właściwość systemowa „java.home” nie jest zmienną środowiskową JAVA_HOME. JAVA_HOME wskazuje na JDK, a java.home wskazuje na JRE. Zobacz tę stronę, aby uzyskać więcej informacji.

Więc ... Mój problem polegał na tym, że moim punktem startowym był folder jre (C: \ jdk1.6.0_26 \ jre), a nie folder jdk (C: \ jdk1.6.0_26), jak myślałem (tools.jar znajduje się w C : \ jdk1.6.0_26 \ lib). Kompiluj wiersz w zależności. Gradle powinien być:

compile files("${System.properties['java.home']}/../lib/tools.jar")
raspayu
źródło
28
tak, jak ustawić java.home na pomysł w Gradle?
Chinaxing
73

Ten sam błąd wystąpił podczas próby wykonania zadania Gradle za pomocą Eclipse. Za każdym razem, gdy uruchamiam polecenie (tj. Wojnę), proces rzucał wyjątek, taki jak:

Nie można znaleźć tools.jar. Sprawdź, czy C: \ Program Files \ Java \ Jre8 "jest poprawną instalacją JDK.

Wypróbowałem rozwiązanie wymienione w tym poście, ale żadne z nich nie rozwiązało tego problemu. Oto moje rozwiązanie:

  1. Przejdź do widoku „Gradle Task”
  2. Kliknij prawym przyciskiem myszy zadanie, które chcesz wykonać
  3. Wybierz opcję Otwórz konfigurację uruchamiania Gradle
  4. W zakładce „Java Home” wybierz lokalne repozytorium JDK, a następnie kliknij OK

Uruchom ponownie, ciesz się!

rattek
źródło
2
Znalazłem tę odpowiedź po godzinach poszukiwań i to w końcu zadziałało. Dziękuję bardzo!
Alan47
5
Nie mogę znaleźć Open Gradle Run i Java Home. Czy możesz wyjaśnić więcej?
Będąc nowym w tym temacie, w jaki sposób można „przejść do widoku„ Zadanie Gradle ””? Nie widzę nic Gradle w menu Widok ani nic takiego, co jest oznaczone jako coś takiego?
Dronz
48

Właśnie dodałem gradle.propertiesplik z następującą zawartością:

org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_45
bondehagen
źródło
5
W Linuksie możesz także edytować ~/.gradle/gradle.propertiesplik, dodając org.gradle.java.home=/usr/lib/jvm/java. Działa dla mnie w Fedorze 24.
samsong8610
36

Miałem podobny przypadek, używając Ubuntu . Maszyna miała tylko zainstalowane środowisko JRE . Właśnie wykonałem poniższe polecenie, aby zainstalować JDK .

sudo apt install openjdk-8-jdk

Italo Borssatto
źródło
1
Tak, zainstalowanie JDK zamiast JRE również rozwiązało problem.
peschü
20

Ja również walczyłem o to rozwiązanie. Znalazłem lepszy sposób na to z Gradle, jak opisano tutaj . Informacje o JVM / JDK możemy uzyskać od samego Gradle.

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

Tak prosty.

Mohammed
źródło
3
To działa dla mnie, jeśli używam compilezamiastruntime
Dori
Podoba mi się to rozwiązanie. Jest ładny i przenośny.
Adam Plumb,
4
To rozwiązanie nie działa z Gradle 4.x. Dostaję NullPointerException.
Thunderforge
1
Mogę sobie wyobrazić, że zwraca wartość null, gdy nie ma narzędzia tools.jar dostępnego z najnowszym JDK. Zobacz github.com/gradle/gradle/blob/master/subprojects/base-services/…
Mohammed
17

W CentOS7 pakiet deweloperski zainstaluje tools.jar. Pliku nie ma w java-1.8.0-openjdk

sudo yum install java-1.8.0-openjdk-devel

Richarda Ginsberga
źródło
Dzięki Richard! Naprawdę mi pomogło! Miałem problemy z uruchomieniem programu „React-native run-android” i otrzymywałem błąd: * Co poszło nie tak: wykonanie zadania nie powiodło się ': app: compileDebugJavaWithJavac'. > Nie można znaleźć tools.jar. Sprawdź, czy /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-5.b14.fc27.x86_64/jre zawiera poprawną instalację JDK. Teraz to działa! Dzięki jeszcze raz!
Matheus Gontijo
Dzięki Richard. Dla mnie też zadziałało. Zasadniczo był to problem ze ścieżką JAVA_HOME, który próbował znaleźć tools.jar w żądanej ścieżce java jdk.
rajdeepbs
16

Dodaj to do gradle.properties:

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

azizbekian
źródło
7
Nie zapomnij użyć podwójnych ukośników. Na przykład: org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_144\ .
CoolMind
11

Może już dwa lata za późno, ale ostatnio napotkałem ten sam problem i oto rozwiązanie, które znalazłem po znalezieniu tego wpisu :

import javax.tools.ToolProvider

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

Powinno działać, jeśli java.home wskazuje na katalog, który nie znajduje się w katalogu JDK, a nawet w systemie Mac OS, w którym byłby plik classes.jar zamiast tools.jar.

Andrei LED
źródło
Nie można wywołać metody getURLs () na obiekcie zerowym
późniejsze
10

W przypadku Centos 7 odkryłem, że tylko JDK ma tools.jar, podczas gdy JRE nie . Zainstalowałem JRE Java 8 ( yum install java-1.8.0-openjdk), ale nie JDK ( yum install java-1.8.0-openjdk-devel).

Zainstalowanie tego ostatniego rozwiązuje problem. Pamiętaj też, aby ustawić JAVA_HOME.

WesternGun
źródło
9

W systemie Windows 10 napotykam ten sam problem i tak go naprawiłem;

  1. Dostęp Advance System Settings>Environment Variables>System Variables
  2. Wybierz ŚCIEŻKA nadpisz domyślne C:\ProgramData\Oracle\Java\javapath
  3. Z własną instalacją jdk, czyli JAVA_HOME =C:\Program Files\Java\jdk1.8.0_162
Dun0523
źródło
to powinna być akceptowana odpowiedź dla Windowsa :)
dzięki
6

W moim systemie (Win 10, JRE 1.8.0, Android Studio 3.1.2, Gradle 4.1) nie ma tools.jarw katalogu JRE ( C:\Program Files\Java\jre1.8.0_171).

Jednak znalazłem to C:\Program Files\Android\Android Studio\jre\libi spróbowałem ustawićJAVA_HOME=C:\Program Files\Android\Android Studio\jre

To działa (dla mnie)!

Stefan Densow
źródło
Ten sam problem, naprawiłem go dla mnie, także Win 10 / Android Studio. Ponadto żadne z powyższych rozwiązań nie wydaje się w rzeczywistości pobierać pliku „Tools.jar” ... po prostu nie jest dostarczany z jre)
Erik Aronesty,
Dla mnie też zadziałało. Utworzyłem gradle.properties w katalogu głównym projektu zawierającymorg.gradle.java.home=E:\\Android Studio\\jre
br4nnigan
3

Linux

Otwórz /etc/environmentw dowolnym edytorze tekstu, takim jak nano lub gedit, i dodaj następujący wiersz:

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

Windows

  1. Uruchom aplet Panelu sterowania systemu (Start - Ustawienia - Panel sterowania - System).
  2. Wybierz kartę Zaawansowane.
  3. Kliknij przycisk Zmienne środowiskowe.
  4. W sekcji Zmienne systemowe kliknij przycisk Dodaj, a następnie wklej następujące wiersze:

    w nazwie zmiennej: JAVA_HOME

    w zmiennej wartości: C:\Program Files\Java\jdk1.x.x_xxx

    gdzie x.x_xxxwersję jdk można pobrać stąd wersję jdkC:\Program Files\Java

  5. W sekcji Zmienne systemowe wybierz opcję Ścieżka, a następnie kliknij przycisk Edytuj, a następnie kliknij nowy przycisk, a następnie za następującym wierszem:

    %JAVA_HOME%/bin;

Mortada Jafar
źródło
Ścieżki mogą się nieznacznie różnić. W Fedorze działało to dla mnie zJAVA_HOME="/usr/lib/jvm/java-openjdk"
rvf
3

To zadziałało dla mnie:

Otrzymałem wiadomość

Wykonanie nie powiodło się dla zadania „: app: compileDebugJavaWithJavac”.

Nie można znaleźć tools.jar. Sprawdź, czy C: \ Program Files \ Java \ jre1.8.0_121 zawiera poprawną instalację JDK.

  • W Android Studio sprawdź lokalizację zestawu SDK.
  • Plik, struktura projektu, lokalizacja SDK, lokalizacja JDK.
  • Przykład: C: \ android-studio \ android-studio \ jre
  • Skopiuj plik tools.jar z folderu C: \ android-studio \ android-studio \ jre \ lib do folderu C: \ Program Files \ Java \ jre1.8.0_121 \ lib.
  • Spróbować ponownie.
miłość na żywo
źródło
3

Jeśli używasz terminala do budowania i masz ten błąd, możesz wskazać jdk w pakiecie z Android Studio w swoim gradle.propertiespliku:

org.gradle.java.home=/usr/local/android-studio/jre
Wiktor Wardzichowski
źródło
2

Podobnie jak inne odpowiedzi, ustawiłem właściwość org.gradle.java.home w pliku gradle.properties . Ale ścieżka z separatorami \ nie działała (budowanie w systemie Windows 10):

Strona główna Java dostarczona przez „org.gradle.java.home” jest nieprawidłowa. Nieprawidłowy katalog: C: Program FilesJavajdk1.8.0_65

Więc zamiast

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

musiałem użyć

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

potem budowa się powiodła

Problem polega na tym, że projekt jest budowany za pomocą JRE zamiast JDK, a ponieważ budowałem go z zaćmienia, to również działało:

  • W oknie> Preferencje> Gradle> Argumenty określ środowisko JRE obszaru roboczego i zestaw JDK.
  • W oknie> Preferencje> Java> Zainstalowane środowiska JRE określ zestaw JDK jako domyślny
Piro mówi Przywróć Monikę
źródło
2

Rozwiązałem problem w ten sposób:

Veljko P.
źródło
Musiałem go skopiować do C:\Program Files (x86)\Java\jre1.8.0_211iC:\Program Files (x86)\Java\jre1.8.0_251
TessavWalstijn
1

Czy upewniłeś się, że tools.jar znalazło się na ścieżce kompilacji? Może ścieżka jest nieprawidłowa.

task debug << {
    configurations.compile.each { println it }
}
Peter Niederwieser
źródło
Tak, dotarło do ścieżki klasowej, ale nadal występuje problem.
Abhishek Gupta
1

Dodanie ścieżki JDK za pośrednictwem zakładki JAVA_HOME w „Open Gradle Run Configuration” rozwiąże problem.

Haseena B
źródło
0

Wypróbowałem większość najlepszych opcji, ale wygląda na to, że coś jest nie tak z konfiguracją środowiska, więc nie pomogły. Co rozwiązało problem dla mnie było, aby ponownie zainstalować jdk1.8.0_201 , a jre1.8.0_201i to rozwiązać błędu dla mnie. Mam nadzieję, że to komuś pomoże.

Anton Belev
źródło