web-dev-qa-db-fra.com

Gradle: impossible de déterminer Java de '11 .0.2 '

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
111
lesley2958

Il existe deux applications Gradle différentes dans votre système.

  1. le Gradle à l'échelle du système
    Cette application est invoquée par gradle (arguments).

  2. 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).

101
tryman

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

29
lupchiazoem

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=

9
dr0i

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
4
craq

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+

4
SuperAndrew

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
3

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
2
Rocky Inde

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.

2
Maciel Bombonato

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/

2
juancho85

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)

0
atreyHazelHispanic

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é)

0
Derrick Lamptey

J'ai rencontré un problème similaire. Je les ai supprimés:

  • bibliothèques et caches du dossier .idea (YourApp> .idea> ..) ET
  • contenu du dossier de construction.

    puis reconstruisez.

* N'OUBLIEZ PAS DE SAUVEGARDER VOTRE PROJET D'ABORD *

0
KHAN

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
0
Nestor Milyaev

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:

  1. Désinstallez le JDK indésirable si vous en avez déjà un installé. https://www.Java.com/tr/download/help/uninstall_Java.xml
  2. Dirigez-vous vers http://www.Oracle.com/technetwork/Java/javase/downloads/jdk8-downloads-2133151.html
  3. Connectez-vous à/Ouvrez un compte Oracle si vous n'êtes pas déjà connecté.
  4. Téléchargez le JDK 8 plus ancien mais fonctionnel pour la configuration de votre ordinateur (32 bits/64 bits, Windows/Linux, etc.)
  5. Installez le JDK. N'oubliez pas le chemin d'installation. ( https://docs.Oracle.com/cd/E19182-01/820-7851/inst_cli_jdk_javahome_t/ )
  6. Si vous utilisez Windows, ouvrez les variables d'environnement et modifiez Java chemin via clic droit sur mon 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. Dans Unity 3D, appuyez sur Edit > Preferences > External Tools and fill in the JDK path (Mine was "C:\Program Files\Java\jdk1.8.0_221").
  8. En outre, dans la même fenêtre contextuelle, modifiez le chemin du SDK. (Obtenez-le à partir de Android Studio > SDK Manager > Android SDK > Android SDK Location.)
  9. Si nécessaire, redémarrez votre ordinateur pour que les modifications prennent effet.
0
Onat Korucu

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.

0
MgFrobozz