Native Fehler reagieren: "Java-Version konnte nicht aus '9.0.1' ermittelt werden."

108

Ich arbeite an MacOS und fange gerade erst an react-native.

Einer der ersten Schritte, um loszulegen, ist das Ausführen von: react-native run-androidoder react-native run-ios. Aber ich bekomme diesen Fehler:

react-native run-android

Ergebnis:

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

Folgendes bekomme ich, wenn ich renne java --version:

java --version

Ergebnis:

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)

Bearbeiten

Meine Javac-Version:

javac --version

Ergebnis:

javac 9.0.1

Irgendeine Idee, wie man das behebt?

Xar
quelle
2
können Sie javac -versionbitte auch im Terminal laufen
Bennygenel
1
Ich habe festgestellt, dass dieses Problem etwas alt ist, aber möglicherweise mit der Java-Version oder Gradle zusammenhängt.
Bennygenel

Antworten:

205

PROJECT_PATH/android/gradle/wrapper/gradle-wrapper.propertiesAktualisieren SiedistributionUrl in Ihrer Datei Folgendes:

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

Siehe zugehörige Dokumentation zu Gradle-Verteilungen

Muhammad Adeel
quelle
4
sollte im App-Ordner / android / gradle / wrapper / gradle-wrapper.properties sein
Muhammad Adeel
6
Nachdem ich die Gradle-Version in Ihren Vorschlag geändert habe, gibt es einen weiteren Fehler: Die Klasse com.android.sdklib.repository.AndroidSdkHandler
leMale konnte
7
Warum hilft das aber? React-Native verwendet standardmäßig gradle-2.14.1, wenn Sie eine neue Anwendung starten. Warum benötigen wir also eine andere?
Waltari
11
Erhalten dieses Fehlers nach dem Hinzufügen dieses> javax / xml / bind / annotation / XmlSchema
Milon
15
Sie müssen die neueste Version von Gradle verwenden. Um beispielsweise Java 11 zu unterstützen, können Siegradle-4.10-all.zip
Andrey Kolpakov
15

Stellen Sie sicher , dass Sie JDK8installiert und stellen Sie dann JAVA_HOMEinJDK8

beispielsweise:

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

oder verwenden Sie .bash_*Dateien, um diese Variable festzulegen

Bobu
quelle
1
Ich hatte dies in meiner .zshrc auf dem Mac: export JAVA_HOME=$(/usr/libexec/java_home) Ändern, um export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)die neueste installierte Version von Java v8 auszuwählen, und das gleiche Problem behoben.
Greg Haygood
8
vi ~/.bash_profile

Fügen Sie dann die folgenden Zeilen hinzu:

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)

Geben Sie nun die Datei als Quelle ein, damit die oben genannten Änderungen in der aktuellen Shell wirksam werden:

source ~/.bash_profile 
Sotheng Ski
quelle
1
Diese letzte Zeile hat die export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)Dinge für mich gelöst - Danke!
JohnSalzarulo
7

Unter MacOS habe ich die folgenden Befehle ausgeführt:

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

Ich habe diesen Fehler erhalten, aber für eine neuere Version von Java - 10.0.2.

Um meinen Fehler zu beheben, habe ich die @Blacktovichein diesem Github-Problem genannten Schritte ausgeführt : https://github.com/facebook/react-native/issues/17688

Als ich den androidOrdner in meinem Projekt über Android Studio öffnete , wurde ich dazu aufgefordert Android Gradle plugin update recommended. Zu der Zeit folgte ich einem etwas veralteten Tutorial, das mir sagte, ich solle klicken Don't remind me again for this project.

Wie @Blacktovichein dem oben verlinkten Github-Problem empfohlen, ist es manchmal erforderlich, das Gradle-Plugin zu aktualisieren. Nach dem Update musste ich auch klicken Install Build Tools 27... and sync project(ich erinnere mich nicht an die genaue Version).

Nachdem ich diese Schritte ausgeführt hatte, konnte ich meine reaktionsfähige native App erfolgreich auf dem Android Studio-Emulator ausführen.

Hoffe das hilft jemandem!

Fehlerhafter Philosoph
quelle
1

---- Dezember 2018 --- Achtung --- React Native funktioniert nicht mit Java-Versionen über 8, daher müssen Sie Ihre 9.0.1Version deinstallieren . Führen Sie dazu die folgenden Befehle aus:

cd /Library/Java/JavaVirtualMachines/
ls -l

Identifizieren Sie den Ordner mit Ihrer Java-Version und entfernen Sie ihn

sudo rm -rf jdk.x.x_xxx.jdk

Danach können Sie Java 8 erneut von Oracle herunterladen und installieren. Siehe jdk8-Downloadseite

Guilherme Ferreira
quelle
"React Native funktioniert nicht mit Java-Versionen über 8" ist absolut falsch. Ich habe gerade einen Build mit JDK 13.
Ian Kemp
Meine Antwort stammt aus dem Dezember 2018. Holen Sie sich React Native aus dem Jahr 2018 und führen Sie es dann auf einem JDK 13 aus. Wenn es funktioniert, kommen Sie hierher und aktualisieren Sie Ihre Antwort.
Guilherme Ferreira
0

Wenn Sie Windows verwenden; Stellen Sie sicher, dass Sie Ihren JDK-Pfad zur Umgebungspfadvariablen hinzufügen. Öffnen Sie dann Ihren Android-Ordner aus Ihrem nativen React-Projekt in Android Studio. Die für Sie erforderlichen Dinge werden automatisch aktualisiert.

Shaon
quelle
0

Normalerweise wird dieser Fehler angezeigt, wenn ich vergesse, das Projekt mit Android Studio zu erstellen. Eine einfache Synchronisierung und Aktualisierung von Gradle erledigt die Arbeit.

Nick Rameau
quelle
0

Ich löse dieses Problem, indem ich mein JDK auf 8 herunterstufte.

Gurzoni
quelle
0

Unter Ubuntu sollten Sie diese Befehlszeilen im Terminal ausführen:

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
quelle