Gradle non trova tools.jar


160

Sto usando i doclet javadoc con gradle, quindi ho bisogno di usare il pacchetto tools.jar, che si trova nella cartella lib dal jdk (1.6.0_26 nel mio caso).

Il punto è che Gradle non lo prende automaticamente, quindi stavo aggiungendo quel pacchetto di strumenti alla mia cartella libs, e poi l'ho aggiunto a dependencies.gradle.

Ora voglio portarlo direttamente dalla mia casa JDK nel mio dependencies.gradle. C'è un modo per farlo? Ho provato il prossimo nel mio dependencies.gradle:

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

Ma non lo trova durante la compilazione.


2
Vale la pena ricordare che, come pre-cursore per risolvere questo e mentre mi imbattevo quando lo stavo ottenendo, dovrai assicurarti di aver effettivamente installato un JDK: P E, su alcuni sistemi, è necessario installare il pacchetto devel JDK per ottenere tools.jar
mrooney il

Risposte:


140

Ho avuto questo problema quando stavo cercando di eseguire comandi tramite CLI.

Si è verificato un problema con il sistema che esamina la cartella JRE, ad es D:\Program Files\Java\jre8\bin. Se guardiamo lì dentro, non c'è Tools.jar, quindi l'errore.

Devi trovare dov'è JDK, nel mio caso:, D:\Program Files\Java\jdk1.8.0_11e se guardi nella libdirectory, vedrai Tools.jar.

Cosa ho fatto Ho creato una nuova variabile d'ambiente JAVA_HOME: inserisci qui la descrizione dell'immagine

E quindi è necessario modificare la variabile PATH per includere JAVA_HOME, ad es %JAVA_HOME%/bin; inserisci qui la descrizione dell'immagine

Riaprire il prompt dei comandi e dovrebbe essere eseguito.


15
tool.jar %JAVA_HOME%\lib;non si trova nella bincartella.
GMsoF,

5
significa che dovremmo aggiungere entrambi %JAVA_HOME%/bine %JAVA_HOME%/liballa Pathvariabile allora?
Eric,

3
Anche se tools.jar è effettivamente in \ lib, aggiungendo solo \ bin al percorso come nella soluzione ha funzionato per me, ma non chiedermi perché.
PHPirate,

1
Di solito è necessario un riavvio / logout affinché le modifiche abbiano effetto.
reiner_zuphall,

4
Ho dovuto rimuovere la voce PATH C: \ ProgramData \ Oracle \ Java \ javapath e sostituirla con C: \ ProgramData \ Oracle \ Java \ jdk1.8.xxx per impostazione predefinita nella directory JRE sorella
John,

76

Trovato. La proprietà di sistema 'java.home' non è una variabile d'ambiente JAVA_HOME. JAVA_HOME punta al JDK, mentre java.home punta al JRE. Vedi quella pagina per maggiori informazioni.

Quindi ... Il mio problema era che il mio punto di partenza era la cartella jre (C: \ jdk1.6.0_26 \ jre) e non la cartella jdk (C: \ jdk1.6.0_26) come pensavo (tools.jar è nella C : cartella \ jdk1.6.0_26 \ lib). La riga di compilazione in dependencies.gradle dovrebbe essere:

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

28
quindi, come impostare java.home in idea con Gradle?
Chinaxing,

73

Ho avuto lo stesso errore usando Eclipse nel tentativo di eseguire un'attività Gradle. Ogni volta che eseguo un comando (cioè una guerra) il processo genera un'eccezione come:

Impossibile trovare tools.jar. Verificare che C: \ Programmi \ Java \ Jre8 "sia un'installazione JDK valida.

Ho provato la soluzione elencata in questo post ma nessuno di loro ha risolto questo problema. Ecco la mia soluzione:

  1. Vai alla vista "Gradle Task"
  2. Fare clic con il tasto destro sull'attività che si desidera eseguire
  3. Selezionare Open Gradle Run Configuration
  4. Nella scheda "Java Home" selezionare il repository JDK locale, quindi fare clic su OK

Corri di nuovo, divertiti!


2
Ho trovato questa risposta dopo ore di ricerche, e alla fine ha funzionato. Grazie mille!
Alan47,

5
Non riesco a trovare Open Gradle Run e Java Home. Puoi spiegare ulteriormente?

Essendo nuovo a questo, come si potrebbe "passare alla vista" Compito graduale "? Non vedo nulla Gradle nel menu Visualizza, né qualcosa etichettato niente del genere?
Dronz,

48

Ho appena aggiunto un gradle.propertiesfile con il seguente contenuto:

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

5
Su Linux, puoi anche modificare il ~/.gradle/gradle.propertiesfile, aggiungendo org.gradle.java.home=/usr/lib/jvm/java. Funziona per me su Fedora 24.
samsong8610

36

Ho avuto un caso simile usando Ubuntu . Sulla macchina era installato solo JRE . Quindi, ho appena eseguito il comando seguente per installare il JDK .

sudo apt install openjdk-8-jdk


1
Sì, l'installazione di JDK invece di JRE ha risolto anche il problema per me.
peschü

20

Stavo lottando anche per questa soluzione. Trovato un modo migliore per farlo con Gradle come descritto qui . Siamo in grado di ottenere le informazioni JVM / JDK dallo stesso Gradle.

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

Così semplice.


3
Questo funziona per me se uso compileinvece diruntime
Dori il

Mi piace questa soluzione. È bello e portatile.
Adam Plumb,

4
Questa soluzione non funziona con Gradle 4.x. Ho un NullPointerException.
Thunderforge,

1
Posso immaginare che ritorni a null quando non è disponibile tools.jar con l'ultimo JDK. Vedi github.com/gradle/gradle/blob/master/subprojects/base-services/…
Mohammed

17

In CentOS7 il pacchetto di sviluppo installerà tools.jar. Il file non è presente in java-1.8.0-openjdk

sudo yum install java-1.8.0-openjdk-devel


Grazie Richard! Mi ha davvero aiutato! Stavo lottando per eseguire "reagire nativo run-android" e ottenere l'errore: * Cosa è andato storto: esecuzione non riuscita per l'attività ': app: compileDebugJavaWithJavac'. > Impossibile trovare tools.jar. Verificare che /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-5.b14.fc27.x86_64/jre contenga un'installazione JDK valida. Ora funziona! Grazie ancora!
Matheus Gontijo,

Grazie Richard ... Ha funzionato anche per me. Fondamentalmente si trattava di un problema relativo al percorso JAVA_HOME che cercava di trovare tools.jar nel percorso java jdk desiderato.
rajdeepbs29,

16

Aggiungi questo a gradle.properties:

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


7
Non dimenticare di usare doppie barre posteriori. Ad esempio: org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_144\ .
CoolMind

11

Potrebbero essere due anni troppo tardi, ma di recente ho riscontrato lo stesso problema e questa è la soluzione che ho trovato dopo aver trovato questo post :

import javax.tools.ToolProvider

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

Dovrebbe funzionare se java.home punta a una directory che non si trova nella directory JDK e persino su Mac OS in cui avresti class.jar invece di tools.jar.


Impossibile richiamare il metodo getURLs () sull'oggetto null
Ulteriore

10

Con Centos 7, ho scoperto che solo JDK ha tools.jar, mentre JRE no . Ho installato Java 8 JRE ( yum install java-1.8.0-openjdk), ma non JDK ( yum install java-1.8.0-openjdk-devel).

L'installazione di quest'ultimo risolve il problema. Inoltre, ricorda di impostare JAVA_HOME.


9

Su Windows 10, riscontro lo stesso problema e questo è il modo in cui ho risolto il problema;

  1. Accesso Advance System Settings>Environment Variables>System Variables
  2. Selezionare PERCORSO sovrascrivere il valore predefinito C:\ProgramData\Oracle\Java\javapath
  3. Con la tua installazione jdk che è JAVA_HOME =C:\Program Files\Java\jdk1.8.0_162

questa dovrebbe essere la risposta accettata per Windows :)
grazie

6

Sul mio sistema (Win 10, JRE 1.8.0, Android Studio 3.1.2, Gradle 4.1) non c'è nessun tools.jarnella directory JRE ( C:\Program Files\Java\jre1.8.0_171).

Tuttavia, l'ho trovato C:\Program Files\Android\Android Studio\jre\libe provato l'impostazioneJAVA_HOME=C:\Program Files\Android\Android Studio\jre

Per me va bene)!


Lo stesso problema, risolto per me, anche Win 10 / Android Studio. Inoltre, nessuna delle soluzioni sopra sembra effettivamente scaricare un "Tools.jar" ... semplicemente non viene fornito con il jre)
Erik Aronesty,

Ha funzionato anche per me. Ho creato un gradle.properties nella radice del progetto contenenteorg.gradle.java.home=E:\\Android Studio\\jre
br4nnigan

3

Linux

Apri /etc/environmentin qualsiasi editor di testo come nano o gedit e aggiungi la seguente riga:

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

finestre

  1. Avviare l'applet del Pannello di controllo del sistema (Start - Impostazioni - Pannello di controllo - Sistema).
  2. Seleziona la scheda Avanzate
  3. Fai clic sul pulsante Variabili d'ambiente.
  4. In Variabili di sistema, fai clic sul pulsante Aggiungi, quindi oltre le seguenti righe:

    nel nome della variabile: JAVA_HOME

    in valore variabile: C:\Program Files\Java\jdk1.x.x_xxx

    dove x.x_xxxversione jdk è possibile ottenere la versione jdk da quiC:\Program Files\Java

  5. In Variabili di sistema, seleziona Percorso, quindi fai clic su Modifica, quindi fai clic sul nuovo pulsante e oltre la seguente riga:

    %JAVA_HOME%/bin;


I percorsi possono variare leggermente. In Fedora ha funzionato per me conJAVA_HOME="/usr/lib/jvm/java-openjdk"
rvf

3

Questo ha funzionato per me:

Stavo ricevendo un messaggio

Esecuzione non riuscita per l'attività ': app: compileDebugJavaWithJavac'.

Impossibile trovare tools.jar. Verificare che C: \ Programmi \ Java \ jre1.8.0_121 contenga un'installazione JDK valida.

  • In Android Studio, controlla la tua posizione SDK.
  • File, struttura del progetto, posizione SDK, posizione JDK.
  • Esempio: C: \ android-studio \ android-studio \ jre
  • Copia il file tools.jar nella cartella C: \ android-studio \ android-studio \ jre \ lib nella cartella C: \ Program Files \ Java \ jre1.8.0_121 \ lib.
  • Riprova.

3

Se usi terminal per compilare e hai questo errore puoi puntare a jdk in bundle con Android Studio nel tuo gradle.propertiesfile:

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

2

Come altre risposte ho impostato org.gradle.java.home proprietà in gradle.properties file. Ma il percorso con \ separators non ha funzionato (compilando su Windows 10):

La home Java fornita tramite 'org.gradle.java.home' non è valida. Directory non valida: C: Program FilesJavajdk1.8.0_65

Quindi invece di

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

ho dovuto usare

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

quindi la build ha avuto successo

Il problema è che il progetto è stato creato con JRE invece di JDK e dato che lo stavo costruendo da Eclipse ha funzionato anche:

  • In Finestra> Preferenze> Grado> Gli argomenti specificano Workspace JRE e specificano JDK.
  • In Finestra> Preferenze> Java> InstalledJREs specifica il tuo JDK come predefinito



1

Ti sei assicurato che tools.jar sia riuscito a farlo nel percorso della classe di compilazione? Forse il percorso non è corretto.

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

Sì, è arrivato al percorso di classe, ma ha ancora riscontrato il problema.
Abhishek Gupta,

1

L'aggiunta del percorso JDK attraverso la scheda JAVA_HOME in "Apri configurazione esecuzione pendenza" risolverà il problema.


0

Ho provato la maggior parte delle migliori opzioni, ma sembra che avessi qualcosa di sbagliato nella configurazione del mio ambiente, quindi non mi hanno aiutato. Che risolto il problema per me è stato quello di re-installare jdk1.8.0_201 e jre1.8.0_201e questo ha risolto l'errore per me. Spero che aiuti qualcuno.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.