Gradle tools.jar bulamıyor


160

Ben javadoc doclets gradle ile kullanıyorum, bu yüzden jdk (benim durumumda 1.6.0_26) lib klasöründe olan tools.jar paketini kullanmanız gerekir.

Mesele şu ki, gradle otomatik olarak almaz, bu yüzden bu araçları paketi benim kütüphaneme klasörüne ekledim ve sonra dependsencies.gradle ekledi.

Şimdi onu doğrudan JDK evimden bağımlılıklarıma götürmek istiyorum. Bunu yapmanın bir yolu var mı? Bağımlılıklarımda bir sonraki denedim.gradle:

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

Ama derlerken bulamıyor.


2
Bunu çözmek için ön imleç olarak ve bunu alırken karşılaştığım gibi, aslında bir JDK yüklü olduğundan emin olmanız gerekir: P Ve bazı sistemlerde, tools.jar almak için devel JDK paketini yüklemeniz gerekiyor
mrooney

Yanıtlar:


140

CLI aracılığıyla komutları çalıştırmaya çalışırken bu sorunu yaşadım.

JRE klasörüne bakarak sistem ile ilgili bir sorun vardı yani D:\Program Files\Java\jre8\bin. Oraya bakarsak, hayır Tools.jar, dolayısıyla hata var.

JDKBenim durumumda nerede olduğunu bulmanız gerekir :, D:\Program Files\Java\jdk1.8.0_11ve libdizine bakarsanız , göreceksiniz Tools.jar.

Ne yaptım yeni bir ortam değişkeni yarattı JAVA_HOME: resim açıklamasını buraya girin

Ve sonra PATH değişkeninizi JAVA_HOME'u içerecek şekilde düzenlemeniz gerekir, yani %JAVA_HOME%/bin; resim açıklamasını buraya girin

Komut istemini yeniden açın ve çalıştırmalısınız.


15
tool.jar klasörde %JAVA_HOME%\lib;değil bin.
GMsoF

5
Bu ikimizde ekleyerek gerektiğini anlama geliyor %JAVA_HOME%/binve %JAVA_HOME%/libhiç Pathardından değişkeni?
Eric

3
Tools.jar gerçekten \ lib'de olsa da, çözümde olduğu gibi yola yalnızca \ bin eklemek benim için çalıştı ama nedenini sormayın.
PHPirate

1
Değişikliklerin etkili olması için genellikle yeniden başlatma / oturum kapatma gerekir.
reiner_zuphall

4
PATH girişini kaldırmak zorunda kaldım: C: \ ProgramData \ Oracle \ Java \ javapath ve yerine C: \ ProgramData \ Oracle \ Java \ jdk1.8.xxx ile kardeş JRE dizini
John

76

Buldum. 'Java.home' sistem özelliği JAVA_HOME ortam değişkeni değil. Java.home JRE'yi gösterirken, JAVA_HOME JDK'yı gösterir. Daha fazla bilgi için bu sayfaya bakın .

Soo ... Benim sorunum, başlangıç ​​noktam düşündüğüm gibi jdk klasörü (C: \ jdk1.6.0_26) değil, jre klasörü (C: \ jdk1.6.0_26 \ jre) idi (tools.jar C : \ jdk1.6.0_26 \ lib klasörü). Dependsencies.gradle derleme satırı şöyle olmalıdır:

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

28
peki, java.home'i gradle ile fikre nasıl ayarlayabilirim?
Chinaxing

73

Aynı hatayı bir Gradle Task yürütmeye çalışırken Eclipse kullanarak aldım. Her komut çalıştırdığımda (yani savaş) süreç şöyle bir istisna attı:

Tools.jar bulunamadı. Lütfen C: \ Program Files \ Java \ Jre8 "dosyasının geçerli bir JDK yüklemesi olduğunu kontrol edin.

Bu yazıda listelenen çözümü denedim, ancak hiçbiri bu sorunu çözmedi. İşte benim çözümüm:

  1. "Gradle Task" görünümüne gidin
  2. Yürütmek istediğiniz göreve sağ tıklayın
  3. Gradle Run Yapılandırmasını Aç'ı seçin
  4. "Java Home" sekmesinde yerel JDK veri havuzunuzu seçin ve Tamam'ı tıklayın.

Tekrar koş, tadını çıkar!


2
Bu cevabı saatler süren aramalardan sonra buldum ve sonunda işe yaradı. Çok teşekkür ederim!
Alan47

5
Açık Gradle Run ve Java Home'u bulamıyorum. Daha fazla açıklayabilir misiniz?

Bunda yeni olan biri nasıl "Gradle Task" görüşüne "gider? Hiçbir şey görmüyorum Görünüm menüsünün altında Gradle, ne de böyle bir şey etiketlenmiş?
Dronz

48

Az gradle.propertiesönce aşağıdaki içeriğe sahip bir dosya ekledim :

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

5
Linux'ta, ~/.gradle/gradle.propertiesdosya ekleyerek de düzenleyebilirsiniz org.gradle.java.home=/usr/lib/jvm/java. Fedora 24 üzerinde çalışıyor.
samsong8610

36

Ubuntu kullanarak benzer bir durum vardı . Makinede yalnızca JRE kurulu. Bu yüzden JDK'yı yüklemek için aşağıdaki komutu yürüttüm .

sudo apt install openjdk-8-jdk


1
Evet, JRE yerine JDK yüklemek de benim için sorunu çözdü.
peschü

20

Ben de bu Çözüm için mücadele ediyordum. Burada açıklandığı gibi Gradle ile daha iyi bir yol buldum . JVM / JDK bilgilerini Gradle'ın kendisinden alabiliriz.

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

Çok basit.


3
Bunun compileyerine kullanırsam bu benim için işe yararruntime
Dori

Bu çözümü seviyorum. Güzel ve taşınabilir.
Adam Plumb

4
Bu çözüm Gradle 4.x ile çalışmaz. Anladım NullPointerException.
Thunderforge

1
En son JDK ile kullanılabilir bir tools.jar olmadığında null döndüğünü hayal edebiliyorum. Bkz. Github.com/gradle/gradle/blob/master/subprojects/base-services/…
Muhammed

17

CentOS7'de geliştirme paketi tools.jar dosyasını yükleyecektir. Dosya java-1.8.0-openjdk dosyasında mevcut değil

sudo yum install java-1.8.0-openjdk-devel


Teşekkürler Richard! Bana gerçekten yardımcı oldu! Ben "tepki-yerli run-android" çalıştırmak ve hatayı alıyordu: * Ne yanlış gitti: Yürütme görev için başarısız oldu: app: compileDebugJavaWithJavac '. > Tools.jar bulunamadı. Lütfen /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-5.b14.fc27.x86_64/jre geçerli bir JDK kurulumu içerdiğini kontrol edin. Şimdi çalışıyor! Tekrar teşekkürler!
Matheus Gontijo

Teşekkürler Richard .. Benim için de çalıştı. Temelde, istenen java jdk yolunda tools.jar bulmaya çalışan bir JAVA_HOME yol sorunuydu.
18:55

16

Bunu şuraya ekle gradle.properties:

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


7
Çift eğik çizgi kullanmayı unutmayın. Örneğin: org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_144\ .
CoolMind

11

İki yıl çok geç olabilir, ancak son zamanlarda aynı problemle karşılaştım ve bu, bu yazıyı bulduktan sonra bulduğum çözüm :

import javax.tools.ToolProvider

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

Java.home, JDK dizininin altında olmayan bir dizine ve hatta tools.jar yerine classes.jar'a sahip olacağınız Mac OS'de çalışıyorsa çalışmalıdır.


Boş nesnede getURLs () yöntemi başlatılamıyor
Ulterior

10

Centos 7 ile, sadece JDK'nın olduğunu tools.jar, JRE'nin olmadığını buldum . Java 8 JRE'yi ( yum install java-1.8.0-openjdk) yükledim , ancak JDK'yı ( yum install java-1.8.0-openjdk-devel) yüklemedim .

İkincisinin kurulması sorunu çözer. Ayrıca, ayarlamayı unutmayın JAVA_HOME.


9

Windows 10'da aynı sorunla karşılaşıyorum ve bu sorunu nasıl çözdüm;

  1. Giriş Advance System Settings>Environment Variables>System Variables
  2. Seç YOL varsayılan üzerine yazma C:\ProgramData\Oracle\Java\javapath
  3. Kendi jdk kurulumunuz ile JAVA_HOME =C:\Program Files\Java\jdk1.8.0_162

bu Windows için kabul edilen cevap olmalı :) - teşekkürler
Saher Ahwal

6

Sistemimde (Win 10, JRE 1.8.0, Android Studio 3.1.2, Gradle 4.1) tools.jarJRE dizininde ( C:\Program Files\Java\jre1.8.0_171) yok.

Ancak, buldum C:\Program Files\Android\Android Studio\jre\libve ayar denedimJAVA_HOME=C:\Program Files\Android\Android Studio\jre

İşe yarıyor (benim için)!


Aynı sorun, benim için düzeltti, ayrıca Win 10 / Android Studio. Ayrıca, yukarıdaki çözümlerin hiçbiri aslında bir "Tools.jar" indirmiyor gibi görünüyor ... sadece jre ile gelmiyor)
Erik Aronesty

Benim için de çalıştı. Proje kökünde bir gradle.properties oluşturdumorg.gradle.java.home=E:\\Android Studio\\jre
br4nnigan

3

Linux

Nano veya gedit/etc/environment gibi herhangi bir metin düzenleyicide açın ve aşağıdaki satırı ekleyin:

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

pencereler

  1. Sistem Denetim Masası uygulamasını başlatın (Başlat - Ayarlar - Denetim Masası - Sistem).
  2. Gelişmiş sekmesini seçin.
  3. Ortam Değişkenleri düğmesini tıklayın.
  4. Sistem Değişkenleri altında, ekle düğmesini tıklayın ve ardından aşağıdaki satırları geçin:

    Değişken Adında: JAVA_HOME

    Değişken Değerde: C:\Program Files\Java\jdk1.x.x_xxx

    nerede x.x_xxxjdk sürümü buradan jdk sürümünü alabilirsinizC:\Program Files\Java

  5. Sistem Değişkenleri altında, Yol'u seçin, sonra Düzenle'yi tıklatın, ardından yeni düğmeyi ve ardından aşağıdaki satırı geçin:

    %JAVA_HOME%/bin;


Yollar biraz değişebilir. Fedora'da bu benim için çalıştıJAVA_HOME="/usr/lib/jvm/java-openjdk"
rvf

3

Bu benim için çalıştı:

Mesaj alıyordum

': App: compileDebugJavaWithJavac' görevi için yürütme başarısız oldu.

Tools.jar bulunamadı. Lütfen C: \ Program Files \ Java \ jre1.8.0_121'in geçerli bir JDK yüklemesi içerdiğini kontrol edin.

  • Android Studio'da SDK Konumunuzu kontrol edin.
  • Dosya, Proje Yapısı, SDK Konumu, JDK Konumu.
  • Örnek: C: \ android-studio \ android-studio \ jre
  • C: \ android-studio \ android-studio \ jre \ lib klasöründeki tools.jar dosyasını C: \ Program Files \ Java \ jre1.8.0_121 \ lib klasörüne kopyalayın.
  • Tekrar dene.

3

Oluşturmak için terminal kullanıyorsanız ve bu hatayla karşılaşırsanız, gradle.propertiesdosyanızda android studio ile birlikte gelen jdk'yi işaret edebilirsiniz :

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

2

Diğer cevaplar gibi ben de gradle.properties dosyasında org.gradle.java.home özelliğini ayarladım . Ancak \ separatörlü yol çalışmadı (Windows 10 üzerinde bina):

'Org.gradle.java.home' aracılığıyla sağlanan Java ana sayfası geçersiz. Geçersiz dizin: C: Program FilesJavajdk1.8.0_65

Yani yerine

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

kullanmak zorundaydım

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

o zaman yapı başarılı oldu

Sorun şu ki proje JDK yerine JRE ile inşa edilmiş ve ben tutulmadan inşa beri bu da çalıştı:

  • Pencere> Tercihler> Gradle> Bağımsız Değişkenlerde JRE Çalışma Alanı'nı ve JDK'nızı belirtin.
  • Pencere> Tercihler> Java> YüklüJRE'lerde JDK'nızı varsayılan olarak belirtin



1

Tools.jar dosyasının derleme sınıfı yolunda olduğundan emin misiniz? Belki de yol yanlıştır.

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

Evet, sınıf yoluna ulaştı, ancak yine de sorunu alıyor.
Abhishek Gupta

1

"Gradle Run Yapılandırmasını Aç" içindeki JAVA_HOME sekmesinden JDK yolu eklemek sorunu çözecektir.


0

En iyi seçeneklerin çoğunu denedim ama çevre kurulumumda bir sorunum var gibi görünüyor, bu yüzden yardım etmediler. Benim için sorun çözüldü oldu yeniden yükleyin jdk1.8.0_201 ve jre1.8.0_201ve bu benim için hatayı çözdü. Umarım birine yardım eder.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.