React Native error: "Could not determine java version from '9.0.1'."

I'm working on MacOS and just starting with react-native.

One of the first steps to get started is to run: react-native run-android or react-native run-ios. But I'm getting this error:

react-native run-android

Result:

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

This is what I get when I run java --version:

java --version

Result:

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)

Edit

My javac version:

javac --version

Result:

javac 9.0.1

Any idea on how to fix this?


Solution 1:

In your PROJECT_PATH/android/gradle/wrapper/gradle-wrapper.properties file, update your distributionUrl to the following:

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

See related gradle distributions documentation

Solution 2:

Really the fastest way to get around this error is to use JDK 8. Except when you really need to use JDK9.

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Don't forget to change your enviroment variable JAVA_HOME to the new JDK version!

Solution 3:

Make sure that you have JDK8 installed and then set JAVA_HOME into JDK8

for example:

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

or use .bash_* files to set this variable

Solution 4:

vi ~/.bash_profile

Then add the following lines:

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)

Now source the file to make the above changes effective in the current shell:

source ~/.bash_profile 

Solution 5:

On MacOS, I ran the following commands:

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