React Native error: "Impossibile determinare la versione java da '9.0.1'."


108

Sto lavorando su MacOS e sto iniziando con react-native.

Uno dei primi passaggi per iniziare è eseguire: react-native run-androido react-native run-ios. Ma ricevo questo errore:

react-native run-android

Risultato:

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

Questo è quello che ottengo quando corro java --version:

java --version

Risultato:

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)

modificare

La mia versione di javac:

javac --version

Risultato:

javac 9.0.1

Qualche idea su come risolvere questo problema?


2
puoi correre javac -versionanche tu nel terminale per favore
bennygenel

1
Ho scoperto che questo problema è un po 'vecchio ma potrebbe essere correlato alla versione java o gradle.
bennygenel

Risposte:


205

Nel tuo PROJECT_PATH/android/gradle/wrapper/gradle-wrapper.propertiesfile, aggiorna il tuodistributionUrl al seguente:

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

Vedere la documentazione relativa alle distribuzioni gradle


4
dovrebbe essere nella cartella app / android / gradle / wrapper / gradle-wrapper.properties
Muhammad Adeel

6
Dopo aver modificato la versione gradle secondo il tuo suggerimento, mi viene
fornito

7
Perché questo aiuta però? React-Native utilizza gradle-2.14.1 per impostazione predefinita quando si avvia una nuova applicazione, quindi perché ne abbiamo bisogno di un'altra?
Waltari

11
ottenere questo errore dopo aver aggiunto questo> javax / xml / bind / annotation / XmlSchema
Milon

15
Devi utilizzare l'ultima versione di Gradle. Ad esempio, per supportare Java 11, puoi usaregradle-4.10-all.zip
Andrey Kolpakov


15

Assicurati di aver JDK8installato e quindi impostato JAVA_HOMEinJDK8

per esempio:

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

o utilizzare i .bash_*file per impostare questa variabile


1
Avevo questo nel mio .zshrc su Mac: export JAVA_HOME=$(/usr/libexec/java_home) cambiandolo per scegliere export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)l'ultima versione installata di Java v8 e risolto lo stesso problema.
Greg Haygood

8
vi ~/.bash_profile

Quindi aggiungi le seguenti righe:

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)

Ora fonte il file per rendere effettive le modifiche di cui sopra nella shell corrente:

source ~/.bash_profile 

1
Quest'ultima riga ha export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)risolto le cose per me - Grazie!
JohnSalzarulo

7

Su MacOS, ho eseguito i seguenti comandi:

brew cask uninstall java
brew tap caskroom/versions
brew cask install java8 "or just brew cask install java to install latest version"

3

Ho ricevuto questo errore, ma per una versione più recente di Java - 10.0.2.

Per correggere il mio errore, ho seguito i passaggi menzionati @Blacktovichein questo problema di Github: https://github.com/facebook/react-native/issues/17688

Quando ho aperto la androidcartella all'interno del mio progetto tramite Android Studio, mi è stato chiesto Android Gradle plugin update recommended. A quel tempo, stavo seguendo un tutorial leggermente obsoleto che mi diceva di fare clic Don't remind me again for this project.

Tuttavia, come @Blacktovicheconsigliato nel problema di GitHub collegato sopra, a volte è necessario aggiornare il plugin Gradle. Dopo l'aggiornamento, ho anche dovuto fare clic Install Build Tools 27... and sync project(non ricordo la versione esatta).

Dopo aver seguito questi passaggi, sono stato in grado di eseguire correttamente la mia app nativa reattiva sull'emulatore di Android Studio.

Spero che questo aiuti qualcuno!


1

---- Dicembre 2018 --- fai attenzione --- React Native non funziona con le versioni di Java superiori alla 8, quindi devi disinstallare la tua 9.0.1versione. A tale scopo, eseguire i seguenti comandi:

cd /Library/Java/JavaVirtualMachines/
ls -l

Identifica la cartella contenente la tua versione di Java, quindi rimuovila

sudo rm -rf jdk.x.x_xxx.jdk

Dopodiché puoi scaricare e installare di nuovo java 8 da Oracle. Fare riferimento alla pagina di download di jdk8


"React Native non funziona con versioni di Java superiori a 8" assolutamente errate. Ho una build in esecuzione su JDK 13 in questo momento.
Ian Kemp

La mia risposta è di DIC 2018. Ottieni React Native dal 2018, quindi corri su un JDK 13 e poi, se funziona, vieni qui e aggiorna la tua risposta.
Guilherme Ferreira

0

Se stai usando Windows; Assicurati di aggiungere il tuo percorso jdk alla variabile del percorso dell'ambiente. Quindi apri la tua cartella Android dal tuo progetto nativo React in Android Studio. Aggiornerà automaticamente le cose necessarie per te.


0

Di solito ottengo questo errore quando dimentico di creare il progetto utilizzando Android Studio. Una semplice sincronizzazione e l'aggiornamento di Gradle faranno il lavoro.



0

Su Ubuntu, dovresti eseguire queste righe di comando nel terminale:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt install oracle-java8-installer
sudo apt install oracle-java8-set-default
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.