10 votes

gradlew utilise une mauvaise version de Java

Je travaille sur une application Android utilisant Kotlin. J'exécute un linter Kotlin en ligne de commande ./gradlew klint.
Mais cela me donne une erreur :

Gradle 4.4 nécessite Java 7 ou plus pour fonctionner. Vous utilisez actuellement Java 6.

Lorsque je vérifie la structure du projet, j'utilise le JDK intégré.
J'ai aussi mis à jour Android studio à la dernière version. Je ne sais pas comment mettre à jour le JDK intégré à la dernière version.

java version

"1.6.0_65" Java(TM) SE Runtime Environment (build 1.6.0_65-b14-468) Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-468, mixed mode)

which java - /usr/bin/java

echo $PATH - /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/username/Library/Android/sdk/platform-tools

echo $JAVA_HOME - vide

12voto

cricket_007 Points 6938

Une copie de le dernier OpenJDK est fourni avec Android Studio 2.2 et plus, et c'est la version du JDK que nous vous recommandons d'utiliser pour vos projets Android.

https://developer.Android.com/studio/intro/studio-config.html#jdk

Cependant, ceci ne concerne que la construction de vos applications. dans Android Studio et non du terminal avec gradlew sinon, il utilisera ce qui se trouve dans le système d'exploitation. $PATH variable.

Afin d'utiliser le JDK embarqué, vous devez au moins configurer JAVA_HOME par exemple,

export JAVA_HOME=/path/to/AndroidStudio/jdk  # TODO: Find this
./gradlew

Je vous recommande toutefois d'utiliser le mécanisme d'installation de Java de votre système d'exploitation.

Pour une gestion facile de la bibliothèque Java (sur Linux et Mac), vous pouvez essayer d'utiliser sdkman

9voto

Vairavan Points 174

Gradle.properties peut être mis à jour pour pointer vers le JDK intégré qui est fourni avec Android Studio.

org.gradle.java.home=/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home

1voto

Pardeep Kumar Points 127

Le problème est résolu en ajoutant :

/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin

au début de la variable PATH . Ce que j'ai trouvé est que : Il y a trois emplacements java.

  1. Java qui est livré avec mac ( /usr/bin/java )
  2. Java téléchargé depuis oracle . ( /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin )
  3. Java embarqué avec Android Studio ( /Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/bin/ )

Dans mon cas, le gradlew utilisait toujours la java de MAC (point numéro 1). Donc quand j'ai ajouté " java dowloaded from oracle (point 2)" au début de la variable path, il a commencé à utiliser celui d'oracle et ma commande gradlew s'est exécutée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X