Gradle: Java-Version von '11 .0.2 'konnte nicht ermittelt werden

133

Ich habe folgenden Kommentar abgegeben:

./gradlew app:installDebug

nur um mit dem Protokoll erfüllt zu werden:

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

Meine Version von gradle ist 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

Ich bin nicht sicher, wie ich vorgehen soll (ich habe versucht, ein Upgrade / Downgrade durchzuführen, aber bisher hat nichts funktioniert).

UPDATE: Als ich lief ./gradlew --version, bekam ich folgendes:

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

Mein gradle-wrapper.propertiesenthält:

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
lesley2958
quelle
5
Ist es laut diesem Fehlerbericht möglich, dass Ihr Gradle-Wrapper älter ist?
Roddy der gefrorenen Erbsen
Meine Version von Gradle ist 5.1.1, was meiner Meinung nach in Ordnung sein sollte.
lesley2958
2
Sie führen den Befehl ./gradlew aus, der die diesem bestimmten Projekt zugeordnete Gradle-Version initiiert. Es gibt keine Garantie dafür, dass die Version des Projekts mit der von Ihnen installierten (5.1.1)
übereinstimmt
1
Ist diese Versionsinfo das Ergebnis von gradle --versionoder ./gradlew --version? Gradle-basierte Projekte verwenden häufig einen Wrapper , um es verschiedenen Entwicklern zu erleichtern, dieselbe Gradle-Version zum Erstellen des Projekts zu verwenden. Dies macht Builds auch stabiler.
Slaw
das ist die Version vongradle --version
lesley2958

Antworten:

122

Es gibt zwei verschiedene Gradle-Anwendungen in Ihrem System.

  1. der systemweite Gradle
    Diese Anwendung wird von aufgerufen gradle (arguments).

  2. Der Gradle-Wrapper
    Der Gradle-Wrapper ist für jedes Projekt spezifisch und kann nur mit dem Befehl im Projektverzeichnis aufgerufen werden ./gradlew (arguments).

Ihre systemweite Gradle-Version ist 5.1.1 (wie das OP in den Kommentaren erläutert, hat die Ausführung des Befehls die gradle --versionVersion 5.1.1 zurückgegeben).

Der Fehler ist jedoch das Ergebnis eines Aufrufs des Gradle-Wrappers ( ./gradlew). Könnten Sie die Gradle-Wrapper-Version Ihres Projekts überprüfen? Um dies zu erreichen , führen ./gradlew --versioninnerhalb Ordner Ihres Projektes, in dem Verzeichnis , in dem die gradlew und gradlew.bat Dateien sind.

Update 1:
Da die Ausführung ./gradlew --versionfehlgeschlagen ist, können Sie die Version Ihres Wrappers manuell überprüfen, indem Sie die Datei öffnen:

(Stammordner des Projekts) /gradle/wrapper/gradle-wrapper.properties

mit einem einfachen Texteditor. Die "DistributionUrl" im Inneren sollte uns die Version des Wrappers mitteilen.

Update 2: Gemäß der aktualisierten Frage des OP ist die Version des Gradle-Wrappers 4.1RC1.
Gradle hat JDK 11 in Gradle 5.0 unterstützt . Da 4.1RC JDK 11 nicht unterstützt, ist dies definitiv ein Problem.

Der naheliegende Weg wäre, den Gradle-Wrapper Ihres Projekts auf Version 5.0 zu aktualisieren. Versuchen Sie jedoch vor dem Aktualisieren die Ausführung gradle app:installDebug. Dies verwendet Ihren systemweit installierten Gradle, dessen Version 5.1.1 ist und Java 11 unterstützt. Überprüfen Sie, ob dies funktioniert. Wenn dies der Fall ist, ist Ihr Buildscript (Datei build.gradle) nicht von wichtigen Änderungen zwischen Version 4.1RC1 und Version 5.1.1 betroffen. Sie können Ihren Wrapper dann aktualisieren, indem Sie ihn über die Befehlszeile im Ordner Ihres Projekts ausführen: gradle wrapper --gradle-version=5.1.1[ *].

Wenn gradle app:installDebugdie Ausführung nicht korrekt ist, müssen Sie möglicherweise Ihr Gradle-Buildscript aktualisieren. Für die Aktualisierung von Version 4.1RC1 auf 5.1.1 bietet das Gradle-Projekt eine Anleitung ( 1 , 2 ) mit wichtigen Änderungen und veralteten Funktionen zwischen kleineren Versionen, sodass Sie schrittweise auf die neueste Version aktualisieren können.

Wenn Sie Ihr Gradle-Buildscript aus irgendeinem Grund nicht aktualisieren können oder möchten, können Sie alternativ jederzeit ein Downgrade Ihrer Java-Version auf eine von Gradle 4.1RC1 unterstützte Version durchführen.

[*] Wie in einer anderen Antwort von @lupchiazoem richtig ausgeführt, verwenden Sie gradle wrapper --gradle-version=5.1.1(und nicht so, ./gradlewwie ich es ursprünglich versehentlich dort gepostet hatte). Der Grund ist, dass Gradle auf Java läuft. Sie können Ihren Gradle-Wrapper mit jeder funktionierenden Gradle-Distribution aktualisieren, entweder mit Ihrem systemweit installierten Gradle oder mit dem Gradle-Wrapper selbst. In diesem Fall ist Ihr Wrapper jedoch nicht mit Ihrer installierten Java-Version kompatibel, sodass Sie den systemweiten Gradle (auch bekannt als gradleund nicht ./gradlew) verwenden müssen.

Tryman
quelle
1
@tryman danke! Für mich war es Ihr Update 2, das mir geholfen hat. Als allgemeine Faustregel denke ich, ich würde die Gradle-Version überprüfen, die herauskommt.
Avid Programmer
Sie geben nicht genau an, was die Ursache des Fehlers ist. Verschiedene Versionen?
João Pimentel Ferreira
Was? Ich fand Update 2 ziemlich klar. Sie versuchte, den Gradle-Wrapper der Version 4.1RC1 mit JDK11 auszuführen. Gradle hat Unterstützung für JDK11 in Version 5.0 hinzugefügt. Was ist Ihre Verwirrung bei JoãoPimentelFerreira? Das war die Ursache, der Rest ist die Lösung, wie der Wrapper des Projekts auf eine spätere Version aktualisiert werden kann, die JDK11 unterstützt.
Tryman
1
Jetzt bin ich an der Reihe, verwirrt zu sein. Wenn Sie tatsächlich sowohl den Gradle-Wrapper in Ihrem Projektordner als auch eine systemweite Gradle-Installation installiert haben, sollte die oben beschriebene schrittweise Lösung für Sie funktionieren. Haben Sie versucht, Ihren Wrapper zu aktualisieren, indem Sie den Aktualisierungsbefehl in Ihrem Projektordner ausgeführt haben gradle wrapper --gradle-version=5.0? Ersetzen Sie 5.0 durch Ihre gewünschte Version. Ich denke, jetzt ist die neueste Version 5.4
Tryman
1
Ein Wort der Vorsicht: Zwischen Version 3.3 Ihres Wrappers und Version 5.x gibt es zwangsläufig einige wichtige Änderungen, auf die Sie möglicherweise stoßen oder nicht. Aus diesem Grund möchte ich Sie in meiner Antwort darauf hinweisen, dass Sie Ihr Projekt zuerst mit Ihrem systemweiten Gradle erstellen, um sicherzustellen, dass mit der Version 5.x, auf die Sie aktualisieren möchten, alles reibungslos funktioniert, bevor Sie den Wrapper Ihres Projekts aktualisieren. Wenn Sie es eilig haben (ich spüre Dringlichkeit in Ihrem Ton), können Sie den Systemgradle jederzeit direkt verwenden oder auf ein älteres JDK herunterstufen und später ein Upgrade Ihres Wrappers nachholen.
Tryman
33

Wie distributionUrlimmer noch auf eine ältere Version verweist, aktualisieren Sie den Wrapper mit:

gradle wrapper --gradle-version 5.1.1

Hinweis: Verwenden gradleund nichtgradlew

Lupchiazoem
quelle
Das funktioniert. Der Befehl aktualisiert meine Gradle-Wrapper-Version. Vielen Dank.
Daniel
Oder ersetzen Sie einfach die Version in gradle/wrapper/gradle-wrapper.properties distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip Version 6 durch JDK12 scheint nicht zu funktionieren. 5.1.1 funktioniert gut, danke.
Liam Kernighan
11

In meinem Fall wurde die JAVA_HOMEVariable auf gesetzt /usr/lib/jvm/jdk-11.0.2/. Es war ausreichend, die Variable wie folgt zu deaktivieren:

$ export JAVA_HOME=

dr0i
quelle
1
Dies löste auch mein Problem. jenv hat vielleicht anfangs meine probleme angefangen.
Jokarl
für mich GRADLE_HOMEwurde aktualisiert (auf 5.4.1``) aber nicht gradle version (zeigt immer noch auf ältere version 4.3) was seltsam ist aber das neu starten des terminal hat gut funktioniert. etwas source ~/.bash_profile
Seltsames
7

Das Update gradle/wrapper/gradle-wrapper.propertiesmit der folgenden Version hat es für mich behoben:

distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
Manuel Schmitzberger
quelle
6

tl; dr : Java durch Ausführen herabstufenupdate-alternatives


Meine System-Gradle-Version war 4.4.1 und die Gradle-Wrapper-Version war 4.0. Nach dem Ausführen des Befehls durch mehrere andere Antworten:

gradle wrapper --gradle-version 4.4.1

Ich hatte immer noch den gleichen Fehler:

FAILURE: Build failed with an exception.

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

Es stellte sich heraus, dass Java 11 erst in Gradle 4.8 unterstützt wurde und meine Software-Repositorys nur 4.4.1 hatten. (Außerdem war das Upgrade auf eine neuere Gradle-Version möglicherweise nicht mit dem Paket kompatibel, das ich kompilieren wollte.)

Die Antwort war, Java herunterzustufen. Auf meinem System war Java8 bereits installiert, und es war einfach, zwischen Java-Versionen zu wechseln, indem Sie diesen Befehl ausführen und die Anweisungen befolgen:

sudo update-alternatives --config java
craq
quelle
5

Da die Wrapper-Version 11+ nicht unterstützt, können Sie einen einfachen Trick machen, um eine neuere Version von InteliJ für immer zu betrügen.

  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/

Oder Wenn Sie mit Java 11+ arbeiten möchten, müssen Sie einfach die Wrapper-Version auf 4.8+ aktualisieren

SuperAndrew
quelle
1
Nur ein Kopf hoch Probieren Sie diese Lösung NICHT unter Android Studio aus. Ich werde es brechen.
Mauricio Sartori
3

Um lange Antwort kurz zu machen, aktualisieren Sie gradlewdas System mit gradleWerkzeug. Beachten Sie, dass das folgende Upgrade auch dann funktioniert, wenn Ihre Systemversion gradleist < 5.

gradle wrapper --gradle-version=5.1.1
Rocky Inde
quelle
3

Ich hatte hier das gleiche Problem. In meinem Fall muss ich eine alte Version von JDK verwenden und ich verwende sdkmanager , um die Versionen von JDK zu verwalten. Daher habe ich die Version der virtuellen Maschine auf 1.8 geändert.

sdk use java 8.0.222.j9-adpt

Danach läuft die App hier wie erwartet.

Maciel Bombonato
quelle
1

Ich habe dieses Problem gelöst, indem ich auf Datei -> Projektstruktur geklickt und dann den JDK-Speicherort in Embedded JDK geändert habe (empfohlen).

Derrick Lamptey
quelle
0

Ich bin auf ein ähnliches Problem gestoßen. Ich habe diese gelöscht:

  • Bibliotheken und Caches aus dem Ordner .idea (YourApp> .idea> ..) AND
  • Inhalt des Build-Ordners.

    dann wieder aufbauen.

* VERGESSEN SIE NICHT, IHR PROJEKT ZUERST ZU SICHERN *

KHAN
quelle
0

Ich bin in Ubuntu 18.04.3 LTS auf dasselbe Problem gestoßen. In meinem Fall hat apt gradle Version 4.4.1 installiert. Die bereits installierte Java-Version war 11.0.4

Die Build-Nachricht, die ich bekam, war

Could not determine java version from '11.0.4'.

Zu der Zeit verwiesen die meisten Online-Dokumente auf Gradle Version 5.6, daher habe ich Folgendes getan:

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

Dann wiederholte ich die Projektinitialisierung (unter Verwendung von "gradle init" mit den Standardeinstellungen). Danach funktionierte "./gradlew build" korrekt.

Ich habe später einen Kommentar zu einer Änderung des Formats der Ausgabe von "java --version" gelesen, die dazu führte, dass gradle brach, was in einer späteren Version von gradle behoben wurde.

MgFrobozz
quelle
0

In meinem Fall habe ich versucht, APK für ein altes Unity 3D-Projekt zu erstellen und zu erhalten (damit ich das Spiel auf meinem Android-Handy spielen kann). Ich habe die neueste Android Studio-Version und alle SDK-Pakete verwendet, die ich über den SDK-Manager in Android Studio herunterladen konnte. SDK-Pakete befanden sich in

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

Und die Fehlermeldung, die ich erhielt, war bis auf die JDK-Version (Java Development Kit) "jdk-12.0.2" dieselbe. JDK befand sich in

C:\Program Files\Java\jdk-12.0.2

Die Umgebungsvariable in Windows war JAVA_HOME: C: \ Programme \ Java \ jdk-12.0.2

Nach 3 Stunden Recherche stellte ich fest, dass Unity JDK 10 nicht unterstützt https://forum.unity.com/threads/gradle-build-failed-error-could-not-determine-java-version-from-10-0-1.532169/. Mein Vorschlag ist:

  1. Deinstallieren Sie unerwünschtes JDK, falls Sie bereits eines installiert haben. https://www.java.com/tr/download/help/uninstall_java.xml
  2. Gehe zu http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  3. Anmelden / Öffnen Sie ein Oracle-Konto, falls es noch nicht angemeldet ist.
  4. Laden Sie das ältere, aber funktionsfähige JDK 8 für Ihre Computereinrichtung herunter (32 Bit / 64 Bit, Windows / Linux usw.).
  5. Installieren Sie das JDK. Merken Sie sich den Installationspfad. ( https://docs.oracle.com/cd/E19182-01/820-7851/inst_cli_jdk_javahome_t/ )
  6. Wenn Sie Windows verwenden, öffnen Sie Umgebungsvariablen und ändern Sie den Java-Pfad, indem Sie mit der rechten Maustaste auf Meine klicken 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. Drücken Sie in Unity 3D auf Edit > Preferences > External Tools and fill in the JDK path (Mine was "C:\Program Files\Java\jdk1.8.0_221").
  8. Bearbeiten Sie im selben Popup den SDK-Pfad. (Holen Sie es von Android Studio > SDK Manager > Android SDK > Android SDK Location.)
  9. Starten Sie Ihren Computer bei Bedarf neu, damit die Änderungen wirksam werden.
Onat Korucu
quelle
0

muss zur Projektdatei .. gradle / wrapper / gradlewrapper.properties

Dort können Sie den Wert distributionurlauf die aktuellste Version ändern. (Gefunden auf docs.gradle.org)

atreyHazelHispanic
quelle
0

Ich hatte das gleiche Problem im Docker-Setup, als ich versuchte, Gradle-2.4mit zu installieren JDL 11.0.7. Ich muss eine spätere Version installieren , um das Problem zu beheben.

Hier ist die Arbeits-Docker-Datei

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
Adiii
quelle