Erreur React Native: "Impossible de déterminer la version Java à partir de '9.0.1'."

109

Je travaille sur MacOS et je commence juste avec react-native.

L'une des premières étapes pour commencer consiste à exécuter: react-native run-androidou react-native run-ios. Mais j'obtiens cette erreur:

react-native run-android

Résultat:

Scanning folders for symlinks in /Users/ric/myprojs/albums/node_modules (6ms)
Starting JS server...
Building and installing the app on the device (cd android && ./gradlew installDebug)...

FAILURE: Build failed with an exception.

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

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
Could not install the app on the device, read the error above for details.
Make sure you have an Android emulator running or a device connected and have
set up your Android development environment:
https://facebook.github.io/react-native/docs/android-setup.html

C'est ce que j'obtiens quand je cours java --version:

java --version

Résultat:

java 9.0.1
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)
mbp:albums ric$ java --version
java 9.0.1
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)

Éditer

Ma version javac:

javac --version

Résultat:

javac 9.0.1

Une idée pour réparer ceci?

Xar
la source
2
pouvez-vous courir javac -versionaussi dans le terminal s'il vous plaît
bennygenel
1
J'ai trouvé que ce problème était un peu ancien mais pourrait être lié à la version java ou à gradle.
bennygenel

Réponses:

206

Dans votre PROJECT_PATH/android/gradle/wrapper/gradle-wrapper.propertiesfichier, mettezdistributionUrl à jour votre comme suit:

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

Voir la documentation relative aux distributions Gradle

Muhammad Adeel
la source
4
devrait être dans le dossier app / android / gradle / wrapper / gradle-wrapper.properties
Muhammad Adeel
6
Après avoir changé la version gradle de votre suggestion, cela me donne une autre erreur: Impossible d'initialiser la classe com.android.sdklib.repository.AndroidSdkHandler
leMale
7
Pourquoi cela aide-t-il cependant? React-Native utilise gradle-2.14.1 par défaut lorsque vous lancez une nouvelle application, alors pourquoi avons-nous besoin d'une autre?
Waltari
11
obtenir cette erreur après avoir ajouté ceci> javax / xml / bind / annotation / XmlSchema
Milon
15
Vous devez utiliser la dernière version de Gradle. Par exemple, pour prendre en charge Java 11, vous pouvez utilisergradle-4.10-all.zip
Andrey Kolpakov
15

Assurez - vous que vous avez JDK8installé et mis JAVA_HOMEenJDK8

par exemple:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home

ou utilisez des .bash_*fichiers pour définir cette variable

bobu
la source
1
J'avais ceci dans mon .zshrc sur mac: le export JAVA_HOME=$(/usr/libexec/java_home) changer pour export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)choisir la dernière version installée de Java v8 et résoudre ce même problème.
Greg Haygood
8
vi ~/.bash_profile

Ajoutez ensuite les lignes suivantes:

export ANDROID_HOME=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)

Recherchez maintenant le fichier pour que les modifications ci-dessus soient effectives dans le shell actuel:

source ~/.bash_profile 
ski de Sotheng
la source
1
Cette dernière ligne a export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)résolu les choses pour moi - Merci!
JohnSalzarulo
7

Sur MacOS, j'ai exécuté les commandes suivantes:

brew cask uninstall java
brew tap caskroom/versions
brew cask install java8 "or just brew cask install java to install latest version"
Andres Felipe
la source
3

J'obtenais cette erreur, mais pour une version plus récente de Java - 10.0.2.

Pour corriger mon erreur, j'ai suivi les étapes mentionnées @Blacktovichedans ce numéro de Github: https://github.com/facebook/react-native/issues/17688

Lorsque j'ai ouvert le androiddossier dans mon projet via Android Studio, j'ai été invité avec Android Gradle plugin update recommended. À l'époque, je suivais un tutoriel légèrement obsolète qui me disait de cliquer Don't remind me again for this project.

Cependant, comme @Blacktovicherecommandé dans le problème github lié ci-dessus, il est parfois nécessaire de mettre à jour le plugin Gradle. Après la mise à jour, j'ai également dû cliquer Install Build Tools 27... and sync project(je ne me souviens plus de la version exacte).

Après avoir suivi ces étapes, j'ai pu exécuter avec succès mon application native react sur l'émulateur Android Studio.

J'espère que cela aide quelqu'un!

Philosophe maladroit
la source
1

---- Décembre 2018 --- attention --- React Native ne fonctionne pas avec les versions Java supérieures à 8, vous devez donc désinstaller votre 9.0.1version. Pour ce faire, exécutez les commandes suivantes:

cd /Library/Java/JavaVirtualMachines/
ls -l

Identifiez le dossier contenant votre version Java, puis supprimez-le

sudo rm -rf jdk.x.x_xxx.jdk

Après cela, vous pouvez télécharger et installer à nouveau java 8 à partir d'Oracle. Reportez-vous à la page de téléchargement de jdk8

Guilherme Ferreira
la source
"React Native ne fonctionne pas avec les versions Java supérieures à 8" absolument incorrect. J'ai une version exécutée sur JDK 13 en ce moment.
Ian Kemp
Ma réponse est de décembre 2018. Obtenez React Native à partir de 2018, puis exécutez sur un JDK 13, puis si cela fonctionne, venez ici et mettez à jour votre réponse.
Guilherme Ferreira le
0

Si vous utilisez Windows; Assurez-vous d'ajouter votre chemin jdk à la variable de chemin d'environnement. Ensuite, ouvrez votre dossier Android à partir de votre projet natif React dans Android Studio. Il mettra à jour automatiquement les choses nécessaires pour vous.

Shaon
la source
0

J'obtiens généralement cette erreur lorsque j'oublie de créer le projet à l'aide d'Android Studio. Une simple synchronisation et une mise à niveau de Gradle feront le travail.

Nick Rameau
la source
0

Je résous ce problème en rétrogradant mon JDK à 8.

Gurzoni
la source
0

Sur Ubuntu, vous devez exécuter ces lignes de commande dans le terminal:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt install oracle-java8-installer
sudo apt install oracle-java8-set-default
Thien Nhan Nguyen
la source