J'ai couru le commentaire suivant:
./gradlew app:installDebug
seulement à rencontrer avec le journal:
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
Ma version de gradle est 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
Je ne sais pas comment procéder (j'ai essayé la mise à niveau/rétrogradation, mais rien n'a fonctionné jusqu'à présent).
MISE À JOUR: Quand j'ai couru ./gradlew --version
, J'ai obtenu ce qui suit:
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
Ma gradle-wrapper.properties
contient:
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
Il existe deux applications Gradle différentes dans votre système.
le Gradle à l'échelle du système
Cette application est invoquée par gradle (arguments)
.
le wrapper gradle
Le wrapper gradle est spécifique à chaque projet et ne peut être invoqué que dans le répertoire du projet, à l'aide de la commande ./gradlew (arguments)
.
Votre version gradle à l'échelle du système est 5.1.1 (comme l'OP l'a expliqué dans les commentaires, en exécutant la commande gradle --version
a renvoyé la version 5.1.1).
Cependant, l'échec est le résultat d'un appel au gradle-wrapper (./gradlew
). Pourriez-vous vérifier la version de l'emballage de Gradle de votre projet? Pour ce faire, exécutez ./gradlew --version
dans le dossier de votre projet, dans le répertoire où se trouvent les fichiers gradlew et gradlew.bat.
Mise à jour 1:
En cours d'exécution ./gradlew --version
a échoué, vous pouvez vérifier manuellement la version de votre wrapper en ouvrant le fichier:
(dossier racine du projet) /gradle/wrapper/gradle-wrapper.properties
avec un simple éditeur de texte. Le "distributionUrl" à l'intérieur devrait nous dire quelle est la version du wrapper.
Mise à jour 2: Selon la question mise à jour de l'OP, la version du gradle-wrapper est 4.1RC1.
Gradle prise en charge supplémentaire de JDK 11 dans Gradle 5. . Par conséquent, comme 4.1RC ne prend pas en charge JDK 11, c'est définitivement un problème.
La manière la plus évidente serait de mettre à jour le wrapper gradle de votre projet vers la version 5.0. Cependant, avant la mise à jour, essayez d'exécuter gradle app:installDebug
. Cela utilisera votre Gradle installé à l'échelle du système dont la version est 5.1.1 et prend en charge Java 11. Voir si cela fonctionne. Si c'est le cas, votre buildscript (fichier build.gradle) n'est pas affecté. par des changements de rupture entre v.4.1RC1 et v.5.1.1 et vous pouvez ensuite mettre à jour votre wrapper en exécutant à partir de la ligne de commande dans le dossier de votre projet: gradle wrapper --gradle-version=5.1.1
[*].
Si gradle app:installDebug
ne s'exécute pas correctement, alors vous devrez peut-être mettre à jour votre buildscript Gradle. Pour la mise à jour de la version 4.1RC1 vers la version 5.1.1, le projet Gradle fournit un guide ( 1 , 2 ) avec les changements de rupture et les fonctionnalités obsolètes entre les versions mineures, afin que vous peut mettre à jour progressivement vers la dernière version.
Alternativement, si pour une raison quelconque vous ne pouvez pas ou ne voulez pas mettre à jour votre buildscript Gradle, vous pouvez toujours choisir de rétrograder votre Java vers une version prise en charge par Gradle 4.1RC1.
[*] Comme indiqué correctement dans une autre réponse de @lupchiazoem, utilisez gradle wrapper --gradle-version=5.1.1
(et pas ./gradlew
comme je l'avais initialement posté par erreur). La raison en est que Gradle s'exécute sur Java. Vous pouvez mettre à jour votre Gradle-wrapper en utilisant n'importe quelle distribution Gradle fonctionnelle, soit votre Gradle installé à l'échelle du système, soit le Gradle-wrapper lui-même. Cependant, dans ce cas, votre wrapper n'est pas compatible avec la version installée Java, vous devez donc utiliser le Gradle à l'échelle du système (aka gradle
et non ./gradlew
).
Comme distributionUrl
pointe toujours vers une version plus ancienne, mettez à niveau le wrapper en utilisant:
gradle wrapper --gradle-version 5.1.1
Remarque: utilisez gradle
et non gradlew
Dans mon cas, le Java_HOME
la variable a été définie sur /usr/lib/jvm/jdk-11.0.2/
. Il suffisait de désactiver la variable comme ceci:
$ export Java_HOME=
tl; dr: déclasser Java en exécutant update-alternatives
Ma version de gradle système était 4.4.1 et la version wrapper de gradle était 4.0. Après avoir exécuté la commande donnée par plusieurs autres réponses:
gradle wrapper --gradle-version 4.4.1
J'ai toujours eu la même erreur:
FAILURE: Build failed with an exception.
* What went wrong:
Could not determine Java version from '11.0.4'.
Il s'avère que Java 11 n'était pas pris en charge jusqu'au grade 4.8, et mes dépôts de logiciels n'avaient que 4.4.1. compiler.)
La réponse a été de rétrograder Java. Mon système avait en fait Java8 déjà installé, et il était facile de basculer entre les versions Java en exécutant cette commande et en suivant les instructions:
Sudo update-alternatives --config Java
Parce que la version wrapper ne prend pas en charge 11+, vous pouvez faire une astuce simple pour tricher à jamais la nouvelle version d'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/
Ou si vous souhaitez travailler avec Java 11+, vous devez simplement mettre à jour la version wrapper vers 4.8+
Mise à jour gradle/wrapper/gradle-wrapper.properties
avec la version suivante l'a corrigé pour moi:
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.Zip
Pour faire court, répondez à une mise à niveau de votre gradlew
à l'aide de l'outil système gradle
. Notez que la mise à niveau ci-dessous fonctionne même si la version de votre système gradle
est < 5
.
gradle wrapper --gradle-version=5.1.1
J'ai eu le même problème ici. Dans mon cas, je dois utiliser une ancienne version de JDK et j'utilise sdkmanager pour gérer les versions de JDK, j'ai donc changé la version de la machine virtuelle en 1.8.
sdk use Java 8.0.222.j9-adpt
Après cela, l'application s'exécute comme prévu ici.
J'ai eu le même problème. La mise à niveau vers Gradle 5.0 a fait l'affaire pour moi.
Ce lien fournit des étapes détaillées sur la façon d'installer gradle 5.0: https://linuxize.com/post/how-to-install-gradle-on-ubuntu-18-04/
arrivé au fichier de projet .. gradle/wrapper/gradlewrapper.properties
là, vous pouvez changer la valeur de distributionurl
en quelle que soit la dernière version. (Trouvé sur docs.gradle.org)
J'ai résolu cela en cliquant sur Fichier -> Structure du projet, puis j'ai changé l'emplacement du JDK pour utiliser le JDK intégré (recommandé)
J'ai rencontré un problème similaire. Je les ai supprimés:
contenu du dossier de construction.
puis reconstruisez.
* N'OUBLIEZ PAS DE SAUVEGARDER VOTRE PROJET D'ABORD *
J'ai eu un problème similaire: ma valeur par défaut gradle wrapper
était la version 4.x, tandis que la prise en charge des versions supérieures de Java a été ajoutée dans Gradle 5.
J'ai mis à jour mon gradlew
comme décrit ici: https://docs.gradle.org/current/userguide/gradle_wrapper.html#sec:upgrading_wrapper
TLTD:
./gradlew wrapper --gradle-version 5.6.2
Dans mon cas, j'essayais de créer et d'obtenir l'APK pour un ancien projet Unity 3D (afin de pouvoir jouer au jeu dans mon Android). J'utilisais le plus récent Android Version Studio, et tous les packages SDK que j'ai pu télécharger via SDK Manager dans Android Studio. Les packages SDK étaient situés dans
C:/Users/Onat/AppData/Local/Android/Sdk
Et le message d'erreur que j'ai reçu était le même sauf la version JDK (Java Development Kit) "jdk-12.0.2". JDK était situé à
C:\Program Files\Java\jdk-12.0.2
Et la variable d'environnement dans Windows était Java_HOME: C:\Program Files\Java\jdk-12.0.2
Après 3 heures de recherche, j'ai découvert que Unity ne prend pas en charge JDK 10. Comme indiqué dans https://forum.unity.com/threads/gradle-build-failed-error-could-not-determine-Java-version-from-10-0-1.532169/
. Ma suggestion est:
http://www.Oracle.com/technetwork/Java/javase/downloads/jdk8-downloads-2133151.html
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"]
Edit > Preferences > External Tools and fill in the JDK path (Mine was "C:\Program Files\Java\jdk1.8.0_221")
.Android Studio > SDK Manager > Android SDK > Android SDK Location
.)J'ai rencontré le même problème dans Ubuntu 18.04.3 LTS. Dans mon cas, apt a installé la version 4.4.1 de gradle. La version déjà installée Java était la version 11.0.4
Le message de construction que j'ai reçu était
Could not determine Java version from '11.0.4'.
À l'époque, la plupart des documents en ligne faisaient référence à la version 5.6 de Gradle, alors j'ai fait ce qui suit:
Sudo add-apt-repository ppa:cwchien/gradle
Sudo apt update
Sudo apt upgrade gradle
J'ai ensuite répété l'initialisation du projet (en utilisant "gradle init" avec les valeurs par défaut). Après cela, "./gradlew build" a fonctionné correctement.
J'ai lu plus tard un commentaire concernant un changement de format de la sortie de "Java --version" qui a provoqué la rupture de gradle, qui a été corrigé dans une version ultérieure de gradle.