Gradle: impossibile determinare la versione java da '11 .0.2 '


133

Ho eseguito il seguente commento:

./gradlew app:installDebug

solo per essere incontrato con il registro:

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine java version from '11.0.2'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

La mia versione di gradle è 5.1.1:

------------------------------------------------------------
Gradle 5.1.1
------------------------------------------------------------

Build time:   2019-01-10 23:05:02 UTC
Revision:     3c9abb645fb83932c44e8610642393ad62116807

Kotlin DSL:   1.1.1
Kotlin:       1.3.11
Groovy:       2.5.4
Ant:          Apache Ant(TM) version 1.9.13 compiled on July 10 2018
JVM:          11.0.2 (Oracle Corporation 11.0.2+9-LTS)
OS:           Mac OS X 10.13.6 x86_64

Non sono sicuro di come procedere (ho provato l'aggiornamento / il downgrade, ma finora non ha funzionato nulla).

AGGIORNAMENTO: Quando ho corso ./gradlew --version, ho ottenuto quanto segue:

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine java version from '11.0.2'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

Il mio gradle-wrapper.propertiescontiene:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-rc-1-all.zip

5
secondo questo bug report , è possibile che il tuo wrapper gradle sia più vecchio?
Roddy of the Frozen Peas

la mia versione di gradle è 5.1.1, che penso dovrebbe andare bene.
lesley2958

2
Esegui il comando ./gradlew che avvia la versione gradle associata a questo specifico progetto. Non c'è alcuna garanzia che la versione del progetto sia la stessa di quella che hai installato (5.1.1)
tryman

1
Quelle informazioni sulla versione sono il risultato di gradle --versiono ./gradlew --version? I progetti basati su Gradle spesso utilizzano un wrapper per rendere più semplice per sviluppatori diversi utilizzare la stessa versione di Gradle per creare il progetto; questo rende anche le build più stabili.
Slaw

questa è la versione digradle --version
lesley2958

Risposte:


123

Ci sono due diverse applicazioni Gradle nel tuo sistema.

  1. il livello di sistema Gradle
    Questa applicazione è richiamato da gradle (arguments).

  2. il gradle-wrapper
    Il gradle-wrapper è specifico per ogni progetto e può essere invocato solo all'interno della directory del progetto, utilizzando il comando ./gradlew (arguments).

La tua versione gradle a livello di sistema è 5.1.1 (come l'OP spiegato nei commenti, eseguendo il comando gradle --versionrestituito versione 5.1.1).

Tuttavia, l'errore è il risultato di una chiamata a gradle-wrapper ( ./gradlew). Potresti controllare la versione del wrapper gradle del tuo progetto? Per farlo, esegui./gradlew --version nella cartella del tuo progetto, nella directory in cui si trovano i file gradlew e gradlew.bat.

Aggiornamento 1:
poiché l'esecuzione ./gradlew --versionnon è riuscita, puoi controllare manualmente la versione del wrapper aprendo il file:

(cartella principale del progetto) /gradle/wrapper/gradle-wrapper.properties

con un semplice editor di testo. "DistributionUrl" all'interno dovrebbe dirci qual è la versione del wrapper.

Aggiornamento 2: secondo la domanda aggiornata dell'OP, la versione del gradle-wrapper è 4.1RC1.
Gradle ha aggiunto il supporto per JDK 11 in Gradle 5.0 . Quindi, poiché 4.1RC non supporta JDK 11, questo è sicuramente un problema.

Il modo più ovvio sarebbe aggiornare il gradle-wrapper del tuo progetto alla versione 5.0. Tuttavia, prima dell'aggiornamento, prova a eseguire gradle app:installDebug. Questo utilizzerà il tuo Gradle installato a livello di sistema la cui versione è 5.1.1 e supporta Java 11. Verifica se funziona. In tal caso, il tuo buildscript (file build.gradle) non è influenzato da alcuna modifica sostanziale tra v.4.1RC1 e v.5.1.1 e puoi quindi aggiornare il tuo wrapper eseguendo dalla riga di comando all'interno della cartella del tuo progetto: gradle wrapper --gradle-version=5.1.1[ *].

Se gradle app:installDebugnon viene eseguito correttamente, forse è necessario aggiornare il buildscript di Gradle. Per l'aggiornamento dalla v.4.1RC1 alla 5.1.1, il progetto Gradle fornisce una guida ( 1 , 2 ) con modifiche importanti e funzionalità deprecate tra versioni minori, in modo da poter aggiornare gradualmente alla versione più recente.

In alternativa, se per qualche motivo non puoi o non vuoi aggiornare il tuo buildscript di Gradle, puoi sempre scegliere di eseguire il downgrade della tua versione di Java a una supportata da Gradle 4.1RC1.

[*] Come correttamente sottolineato in un'altra risposta di @lupchiazoem, usa gradle wrapper --gradle-version=5.1.1(e non ./gradlewcome avevo originariamente postato lì per errore). Il motivo è che Gradle gira su Java. Puoi aggiornare il tuo gradle-wrapper utilizzando qualsiasi distribuzione Gradle funzionante, sia il tuo Gradle installato a livello di sistema o lo stesso gradle-wrapper. Tuttavia, in questo caso il tuo wrapper non è compatibile con la tua versione di Java installata, quindi devi usare Gradle a livello di sistema (aka gradlee non ./gradlew).


1
@tryman, grazie! per me è stato il tuo aggiornamento 2 che mi ha aiutato. Come regola generale, penso di controllare la versione gradle in uscita.
Avid Programmer

non dici esattamente qual è la CAUSA dell'errore. Versioni diverse?
João Pimentel Ferreira

Che cosa? Ho pensato che l'aggiornamento 2 fosse abbastanza chiaro. Stava cercando di eseguire il wrapper Gradle della versione 4.1RC1 con JDK11. Gradle ha aggiunto il supporto per JDK11 alla versione 5.0. Allora qual è la tua confusione @ JoãoPimentelFerreira? Questa era la causa, il resto è la soluzione su come aggiornare il wrapper del progetto a una versione successiva che supporta JDK11.
tryman

1
Adesso tocca a me essere confuso. Se hai effettivamente sia il wrapper gradle nella cartella del tuo progetto che un'installazione Gradle a livello di sistema, la soluzione passo passo sopra dovrebbe funzionare per te. Hai provato ad aggiornare il tuo wrapper eseguendo nella cartella del tuo progetto il comando update gradle wrapper --gradle-version=5.0? Sostituisci 5.0 con la versione desiderata, penso che ora l'ultima sia la 5.4
tryman

1
Tuttavia, una parola di cautela: tra la versione 3.3 del tuo wrapper e qualsiasi versione 5.x ci saranno sicuramente alcune modifiche sostanziali che potresti incontrare o meno. Ecco perché nella mia risposta ti indico a costruire prima il tuo progetto con il tuo Gradle a livello di sistema per verificare che tutto funzioni correttamente con la versione di 5.x a cui desideri eseguire l'aggiornamento prima di aggiornare il wrapper del tuo progetto. Se hai fretta (sento urgenza nel tuo tono) puoi sempre utilizzare il gradle del sistema direttamente o eseguire il downgrade a un JDK più vecchio e recuperare il ritardo sull'aggiornamento del wrapper in seguito.
tryman

34

Poiché distributionUrlpunta ancora alla versione precedente, aggiorna il wrapper utilizzando:

gradle wrapper --gradle-version 5.1.1

Nota: usa gradlee nongradlew


Che funzioni. Il comando aggiorna la mia versione wrapper gradle. Grazie.
Daniel

O semplicemente sostituire la versione nella gradle/wrapper/gradle-wrapper.properties distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip versione 6 con JDK12 non sembra funzionare. 5.1.1 funziona bene, grazie.
Liam Kernighan

11

Nel mio caso la JAVA_HOMEvariabile era impostata su /usr/lib/jvm/jdk-11.0.2/. È stato sufficiente annullare l'impostazione della variabile in questo modo:

$ export JAVA_HOME=


1
Questo ha risolto anche il mio problema. jenv potrebbe aver iniziato i miei problemi inizialmente.
jokarl

per me è GRADLE_HOMEstato aggiornato (a 5.4.1 '') ma non una versione graduale (punta ancora alla versione precedente 4.3) che è strano ma il riavvio del terminale ha funzionato bene. qualcosa di strano consource ~/.bash_profile
Prayagupd il

7

In aggiornamento gradle/wrapper/gradle-wrapper.properties con la seguente versione lo ha risolto per me:

distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip

6

tl; dr : downgrade java eseguendoupdate-alternatives


La versione del mio sistema gradle era 4.4.1 e la versione wrapper gradle era 4.0. Dopo aver eseguito il comando dato da diverse altre risposte:

gradle wrapper --gradle-version 4.4.1

Ho ancora avuto lo stesso errore:

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine java version from '11.0.4'.

Si è scoperto che java 11 non era supportato fino a gradle 4.8 e i miei repository software avevano solo 4.4.1. (Inoltre, l'aggiornamento alla versione gradle più recente potrebbe essere stato incompatibile con il pacchetto che stavo cercando di compilare.)

La risposta è stata eseguire il downgrade di java. Il mio sistema in realtà aveva java8 già installato ed è stato facile passare da una versione java all'altra eseguendo questo comando e seguendo le istruzioni:

sudo update-alternatives --config java

5

Poiché la versione wrapper non supporta 11+, puoi creare un semplice trucco per imbrogliare per sempre la versione più recente di InteliJ.

  press3x Shift -> type "Switch Boot JDK" -> and change for java 8. 

https://blog.jetbrains.com/idea/2015/05/intellij-idea-14-1-4-eap-141-1192-is-available/

Oppure, se vuoi lavorare con java 11+, devi semplicemente aggiornare la versione wrapper alla 4.8+


1
Solo un avvertimento NON provare questa soluzione su Android Studio. Lo romperò.
Mauricio Sartori

3

Per abbreviare la risposta lunga, aggiorna il tuo gradlewutilizzo dello gradlestrumento di sistema . Nota che l'aggiornamento seguente funziona anche se la gradleversione del tuo sistema è < 5.

gradle wrapper --gradle-version=5.1.1

3

Ho avuto lo stesso problema qui. Nel mio caso ho bisogno di utilizzare una vecchia versione di JDK e sto usando sdkmanager per gestire le versioni di JDK, quindi ho cambiato la versione della macchina virtuale a 1.8.

sdk use java 8.0.222.j9-adpt

Dopodiché, l'app viene eseguita come previsto qui.




1

Ho risolto questo problema facendo clic su File -> Struttura del progetto, quindi ho cambiato la posizione JDK per utilizzare JDK incorporato (consigliato)


0

Ho riscontrato un problema simile. Ho cancellato questi:

  • librerie e cache dalla cartella .idea (YourApp> .idea> ..) AND
  • contenuto della cartella build.

    quindi ricostruire.

* NON DIMENTICARE PRIMA DI EFFETTUARE IL BACKUP DEL PROGETTO *


0

Ho riscontrato lo stesso problema in Ubuntu 18.04.3 LTS. Nel mio caso, apt ha installato gradle versione 4.4.1. La versione java già installata era la 11.0.4

Il messaggio di build che ho ricevuto è stato

Could not determine java version from '11.0.4'.

A quel tempo, la maggior parte dei documenti online faceva riferimento alla versione 5.6 di gradle, quindi ho fatto quanto segue:

sudo add-apt-repository ppa:cwchien/gradle
sudo apt update
sudo apt upgrade gradle

Quindi ho ripetuto l'inizializzazione del progetto (utilizzando "gradle init" con i valori predefiniti). Dopodiché, "./gradlew build" ha funzionato correttamente.

Successivamente ho letto un commento riguardante un cambiamento nel formato dell'output da "java --version" che ha causato l'interruzione di gradle, che è stato corretto in una versione successiva di gradle.


0

Nel mio caso, stavo cercando di creare e ottenere APK per un vecchio progetto Unity 3D (in modo da poter giocare sul mio telefono Android). Stavo usando la versione più recente di Android Studio e tutti i pacchetti SDK che potevo scaricare tramite SDK Manager in Android Studio. I pacchetti SDK si trovavano in

C:/Users/Onat/AppData/Local/Android/Sdk 

E il messaggio di errore che ho ricevuto era lo stesso tranne che per la versione JDK (Java Development Kit) "jdk-12.0.2". JDK si trovava in

C:\Program Files\Java\jdk-12.0.2

E la variabile d'ambiente in Windows era JAVA_HOME: C: \ Programmi \ Java \ jdk-12.0.2

Dopo 3 ore di ricerca, ho scoperto che Unity non supporta JDK 10. Come detto in https://forum.unity.com/threads/gradle-build-failed-error-could-not-determine-java-version-from-10-0-1.532169/. Il mio suggerimento è:

  1. Disinstalla JDK indesiderato se ne hai già uno installato. https://www.java.com/tr/download/help/uninstall_java.xml
  2. Vai a http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  3. Accedi a / Apri un account Oracle se non sei già connesso.
  4. Scarica il vecchio ma funzionale JDK 8 per la configurazione del tuo computer (32 bit / 64 bit, Windows / Linux ecc.)
  5. Installa il JDK. Ricorda il percorso di installazione. ( https://docs.oracle.com/cd/E19182-01/820-7851/inst_cli_jdk_javahome_t/ )
  6. Se utilizzi Windows, apri le variabili d'ambiente e modifica il percorso Java facendo clic con il pulsante destro del mouse su My Computer/This PC>Properties>Advanced System Settings>Environment Variables>New>Variable Name: JAVA_HOME>Variable Value: [YOUR JDK Path, Mine was "C:\Program Files\Java\jdk1.8.0_221"]
  7. In Unity 3D, premere Edit > Preferences > External Tools and fill in the JDK path (Mine was "C:\Program Files\Java\jdk1.8.0_221").
  8. Inoltre, nella stessa finestra popup, modifica il percorso SDK. (Prendilo da Android Studio > SDK Manager > Android SDK > Android SDK Location.)
  9. Se necessario, riavvia il computer affinché le modifiche abbiano effetto.

0

arrivato al file di progetto .. gradle / wrapper / gradlewrapper.properties

lì puoi cambiare il valore di distributionurla quello che è l'ultima versione. (Trovato su docs.gradle.org)


0

Stavo affrontando lo stesso problema nella configurazione Docker, mentre stavo cercando di installare Gradle-2.4con JDL 11.0.7. Devo installare una versione successiva per risolvere il problema.

Ecco il Dockerfile di lavoro

FROM openjdk:11.0.7-jdk
RUN apt-get update && apt-get install -y unzip
WORKDIR /gradle
RUN curl -L https://services.gradle.org/distributions/gradle-6.5.1-bin.zip -o gradle-6.5.1-bin.zip
RUN unzip gradle-6.5.1-bin.zip
ENV GRADLE_HOME=/gradle/gradle-6.5.1
ENV PATH=$PATH:$GRADLE_HOME/bin
RUN gradle --version
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.