Gradle tidak menemukan tools.jar


160

Saya menggunakan doclets javadoc dengan gradle, jadi saya perlu menggunakan paket tools.jar, yang ada di folder lib dari jdk (1.6.0_26 dalam kasus saya).

Intinya adalah gradle tidak mengambilnya secara otomatis, jadi saya menambahkan paket alat itu ke folder libs saya, dan kemudian menambahkannya ke dependencies.gradle.

Sekarang saya ingin mengambilnya langsung dari rumah JDK saya ke dependencies.gradle saya. Apakah ada cara untuk melakukan itu? Saya sudah mencoba yang berikutnya di dependencies.gradle saya:

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

Tetapi tidak menemukannya saat kompilasi.


2
Perlu disebutkan bahwa, sebagai pra-kursor untuk menyelesaikan ini dan ketika saya bertemu ketika saya mendapatkan ini, Anda harus memastikan Anda benar-benar menginstal JDK: P Dan, pada beberapa sistem, Anda akan perlu menginstal paket JDK devel untuk mendapatkan tools.jar
mrooney

Jawaban:


140

Saya memiliki masalah ini ketika saya mencoba menjalankan perintah melalui CLI.

Itu masalah dengan sistem yang melihat folder JRE yaitu D:\Program Files\Java\jre8\bin. Jika kita melihat di sana, tidak ada Tools.jar, maka kesalahannya.

Anda perlu menemukan di mana tempatnya JDK, dalam kasus saya:, D:\Program Files\Java\jdk1.8.0_11dan jika Anda melihat di libdirektori, Anda akan melihat Tools.jar.

Apa yang saya lakukan saya membuat variabel lingkungan baru JAVA_HOME: masukkan deskripsi gambar di sini

Dan kemudian Anda perlu mengedit variabel PATH Anda untuk memasukkan JAVA_HOME, yaitu %JAVA_HOME%/bin; masukkan deskripsi gambar di sini

Buka kembali command prompt dan harus dijalankan.


15
tool.jar %JAVA_HOME%\lib;tidak ada dalam binfolder.
GMsoF

5
apakah ini berarti bahwa kita harus menambahkan keduanya %JAVA_HOME%/bindan %JAVA_HOME%/libke Pathvariabel itu?
Eric

3
Meskipun tools.jar memang ada di \ lib, menambahkan hanya \ bin ke path seperti pada solusi yang bekerja untuk saya tetapi jangan tanya mengapa.
PHPirate

1
Biasanya restart / logout diperlukan agar perubahan berpengaruh.
reiner_zuphall

4
Saya harus menghapus entri PATH C: \ ProgramData \ Oracle \ Java \ javapath dan menggantinya dengan C: \ ProgramData \ Oracle \ Java \ jdk1.8.xxx itu default ke direktori JRE saudara
John

76

Menemukannya. Properti sistem 'java.home' bukan variabel lingkungan JAVA_HOME. JAVA_HOME menunjuk ke JDK, sementara java.home menunjuk ke JRE. Lihat halaman itu untuk info lebih lanjut.

Soo ... Masalah saya adalah titik awal saya adalah folder jre (C: \ jdk1.6.0_26 \ jre) dan bukan folder jdk (C: \ jdk1.6.0_26) seperti yang saya pikir (tools.jar ada di C : \ jdk1.6.0_26 \ lib folder). Baris kompilasi dalam dependencies.gradle harus:

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

28
jadi, bagaimana cara mengatur java.home dalam ide dengan gradle?
Chinaxing

73

Saya mendapat kesalahan yang sama menggunakan Eclipse mencoba menjalankan Tugas Gradle. Setiap kali saya menjalankan perintah (yaitu perang), proses tersebut menghasilkan pengecualian seperti:

Tidak dapat menemukan tools.jar. Silakan periksa apakah C: \ Program Files \ Java \ Jre8 "adalah instalasi JDK yang valid.

Saya mencoba solusi yang tercantum dalam posting ini tetapi tidak satupun dari mereka menyelesaikan masalah ini. Di sini solusi saya:

  1. Pergi ke tampilan "Tugas Tugas"
  2. Klik kanan pada tugas yang ingin Anda jalankan
  3. Pilih Konfigurasi Buka Gradle Run
  4. Pada tab "Java Home" pilih repositori JDK lokal Anda lalu klik OK

Lari lagi, Selamat Menikmati!


2
Saya telah menemukan jawaban ini setelah berjam-jam mencari, dan ini akhirnya berhasil. Terima kasih banyak!
Alan47

5
Saya tidak dapat menemukan Open Gradle Run dan Java Home. Bisakah Anda jelaskan lebih lanjut?

Menjadi orang baru dalam hal ini, bagaimana pandangan "Pergi ke" Tugas Gradle ""? Saya tidak melihat Gradle di bawah menu View, atau ada yang berlabel seperti itu?
Dronz

48

Saya baru saja menambahkan gradle.propertiesfile dengan konten berikut:

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

5
Di linux, Anda juga dapat mengedit ~/.gradle/gradle.propertiesfile, menambahkan org.gradle.java.home=/usr/lib/jvm/java. Bekerja untuk saya di Fedora 24.
samsong8610

36

Saya memiliki kasus serupa menggunakan Ubuntu . Mesin hanya menginstal JRE . Jadi, saya baru saja menjalankan perintah di bawah ini untuk menginstal JDK .

sudo apt install openjdk-8-jdk


1
Ya, menginstal JDK bukan JRE juga memecahkan masalah bagi saya.
peschü

20

Saya juga berjuang untuk Solusi ini. Menemukan cara yang lebih baik untuk itu dengan Gradle seperti yang dijelaskan di sini . Kita bisa mendapatkan informasi JVM / JDK dari Gradle sendiri.

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

Sangat sederhana.


3
Ini berfungsi untuk saya jika saya menggunakan compilebukanruntime
Dori

Saya suka solusi ini. Ini bagus dan portabel.
Adam Plumb

4
Solusi ini tidak berfungsi dengan Gradle 4.x. Saya mendapatkan NullPointerException.
Thunderforge

1
Saya bisa membayangkannya mengembalikan nol ketika tidak ada tools.jar tersedia dengan JDK terbaru. Lihat github.com/gradle/gradle/blob/master/subprojects/base-services/…
Mohammed

17

Di CentOS7 paket pengembangan akan menginstal tools.jar. File tidak ada di java-1.8.0-openjdk

sudo yum install java-1.8.0-openjdk-devel


Terima kasih Richard! Itu sangat membantu saya! Saya kesulitan menjalankan "react-native run-android" dan mendapatkan kesalahan: * Apa yang salah: Eksekusi gagal untuk tugas ': app: compileDebugJavaWithJavac'. > Tidak dapat menemukan tools.jar. Harap periksa bahwa /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-5.b14.fc27.x86_64/jre berisi instalasi JDK yang valid. Sekarang berhasil! Terima kasih lagi!
Matheus Gontijo

Terima kasih Richard .. Ini berhasil juga untuk saya. Pada dasarnya itu adalah masalah jalur JAVA_HOME yang mencoba menemukan tools.jar di jalur java jdk yang diinginkan.
rajdeepbs29

16

Tambahkan ini ke gradle.properties:

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


7
Jangan lupa untuk menggunakan garis miring ganda. Sebagai contoh: org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_144\ .
CoolMind

11

Mungkin terlambat dua tahun, tetapi saya mengalami masalah yang sama baru-baru ini dan ini adalah solusi yang saya dapatkan setelah menemukan posting ini :

import javax.tools.ToolProvider

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

Ini akan berfungsi jika java.home menunjuk ke direktori yang tidak berada di bawah direktori JDK dan bahkan di Mac OS di mana Anda akan memiliki class.jar bukannya tools.jar.


Tidak dapat memanggil metode getURLs () pada objek nol
Ulterior

10

Dengan Centos 7, saya telah menemukan bahwa hanya JDK yang memilikinya tools.jar, sedangkan JRE belum . Saya telah menginstal Java 8 JRE ( yum install java-1.8.0-openjdk), tetapi bukan JDK ( yum install java-1.8.0-openjdk-devel).

Menginstal yang terakhir akan menyelesaikan masalah. Juga, ingat untuk mengatur JAVA_HOME.


9

Pada windows 10, saya menghadapi masalah yang sama dan ini bagaimana saya memperbaiki masalah ini;

  1. Mengakses Advance System Settings>Environment Variables>System Variables
  2. Pilih PATH menimpa default C:\ProgramData\Oracle\Java\javapath
  3. Dengan instalasi jdk Anda sendiri yaitu JAVA_HOME =C:\Program Files\Java\jdk1.8.0_162

ini harus menjadi jawaban yang diterima untuk Windows :) --terima kasih
Saher Ahwal

6

Di sistem saya (Win 10, JRE 1.8.0, Android Studio 3.1.2, Gradle 4.1) tidak ada tools.jardi direktori JRE ( C:\Program Files\Java\jre1.8.0_171).

Namun, saya menemukannya C:\Program Files\Android\Android Studio\jre\libdan mencoba pengaturanJAVA_HOME=C:\Program Files\Android\Android Studio\jre

Itu berhasil (untuk saya)!


Masalah yang sama, memperbaikinya untuk saya, juga Win 10 / Android Studio. Juga, tidak ada solusi di atas yang tampaknya mengunduh "Tools.jar" ... hanya saja tidak ada dengan jre)
Erik Aronesty

Bekerja untuk saya juga. Saya membuat gradle.properties di root proyek yang mengandungorg.gradle.java.home=E:\\Android Studio\\jre
br4nnigan

3

Linux

Buka /etc/environmentdi editor teks apa pun seperti nano atau gedit dan tambahkan baris berikut:

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

Windows

  1. Mulai applet Panel Kontrol Sistem (Mulai - Pengaturan - Panel Kontrol - Sistem).
  2. Pilih tab Advanced.
  3. Klik tombol Variabel Lingkungan.
  4. Di bawah Variabel Sistem, klik tombol tambahkan, lalu lewati baris berikut:

    dalam Nama Variabel: JAVA_HOME

    dalam Nilai Variabel: C:\Program Files\Java\jdk1.x.x_xxx

    di mana x.x_xxxversi jdk Anda bisa mendapatkan versi jdk Anda dari siniC:\Program Files\Java

  5. Di bawah System Variables, pilih Path, lalu klik Edit, lalu klik tombol baru lalu lewati baris berikut:

    %JAVA_HOME%/bin;


Jalur mungkin sedikit berbeda. Di Fedora ini bekerja untuk saya denganJAVA_HOME="/usr/lib/jvm/java-openjdk"
rvf

3

Ini bekerja untuk saya:

Saya mendapat pesan

Eksekusi gagal untuk tugas ': app: compileDebugJavaWithJavac'.

Tidak dapat menemukan tools.jar. Harap periksa bahwa C: \ Program Files \ Java \ jre1.8.0_121 berisi instalasi JDK yang valid.

  • Di Android Studio, periksa Lokasi SDK Anda.
  • File, Struktur Proyek, Lokasi SDK, Lokasi JDK.
  • Contoh: C: \ android-studio \ android-studio \ jre
  • Salin file tools.jar di folder C: \ android-studio \ android-studio \ jre \ lib ke dalam folder C: \ Program Files \ Java \ jre1.8.0_121 \ lib.
  • Mencoba kembali.

3

Jika Anda menggunakan terminal untuk membangun dan Anda memiliki kesalahan ini, Anda dapat menunjuk ke jdk dibundel dengan android studio di gradle.propertiesfile Anda :

org.gradle.java.home=/usr/local/android-studio/jre

2

Seperti jawaban yang lain saya set org.gradle.java.home properti di gradle.properties berkas. Tetapi path dengan \ separator tidak berfungsi (membangun di windows 10):

Rumah Jawa yang disediakan melalui 'org.gradle.java.home' tidak valid. Direktori tidak valid: C: Program FilesJavajdk1.8.0_65

Jadi, bukannya

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

saya harus menggunakan

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

maka membangun itu berhasil

Masalahnya adalah proyek itu dibangun dengan JRE bukan JDK dan karena saya membangunnya dari gerhana ini juga bekerja:

  • Di Window> Preferences> Gradle> Argumen tentukan JRE Workspace dan tentukan JDK Anda.
  • Di Window> Preferences> Java> InstalledJREs tentukan JDK Anda sebagai default



1

Apakah Anda memastikan bahwa tools.jar membuatnya di jalur kelas kompilasi? Mungkin jalannya salah.

task debug << {
    configurations.compile.each { println it }
}

Ya itu memang berhasil ke jalur kelas, tetapi masih mendapatkan masalah.
Abhishek Gupta

1

Menambahkan jalur JDK melalui tab JAVA_HOME di "Open Gradle Run Configuration" akan menyelesaikan masalah.


0

Saya sudah mencoba sebagian besar opsi teratas tetapi tampaknya ada sesuatu yang salah dengan pengaturan lingkungan saya sehingga tidak membantu. Apa yang memecahkan masalah bagi saya adalah menginstal ulang jdk1.8.0_201 dan jre1.8.0_201dan ini memecahkan kesalahan bagi saya. Semoga itu bisa membantu seseorang.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.