kojow7
kojow7

Reputation: 11404

Using Gradle with OpenJDK 1.9

I cannot seem to use Gradle with OpenJDK 1.9.

When I run the following command:

react-native run-android

I end up getting this error.

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-internal'.

Running java -version shows me:

openjdk version "9-internal"
OpenJDK Runtime Environment (build 9-internal+0-2016-04-14-195246.buildd.src)
OpenJDK 64-Bit Server VM (build 9-internal+0-2016-04-14-195246.buildd.src, mixed mode)

Any ideas how I can fix this?

Upvotes: 2

Views: 4425

Answers (3)

vabada
vabada

Reputation: 1814

I had the same exact issue and, in my case, it worked by removing OpenJDK:

sudo rm /var/lib/dpkg/info/openjdk-*
sudo apt-get purge openjdk-*
sudo rm /etc/apt/sources.list.d/*java*
sudo apt-get update

and installing the Oracle Java SDK:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java8-set-default

I know this is not the exact answer (using Gradle with OpenJDK 1.9), but I managed to keep going and run the app both in a virtual device and in my smartphone. Hope it helps.

Note: I am running react-native: 0.40.0 and react-native-cli: 2.0.1 in Ubuntu 16.04

Upvotes: -2

omajid
omajid

Reputation: 15223

This seems to be an incompatibility with your build of OpenJDK 9 and Gradle.

Your OpenJDK version is:

openjdk version "9-internal"

And it appears Gradle can't parse it:

Could not determine java version from '9-internal'.

Looks like gradle is prepared to accept 9-ea, but not 9-internal. You will have to modify your build of OpenJDK to have it return "9-ea" or something similar for java -version.

The following configure options when building OpenJDK 9 should do the trick:

configure \
  --with-version-pre="ea" \
  --with-version-opt="" \
  ... your other options ...

Upvotes: 1

lance-java
lance-java

Reputation: 28016

Which version of gradle are you using?

cd android
./gradlew -version

I think there was a bug determining versions for java 1.9 which was fixed in Gradle 2.10.

Another option is to try spoofing a java.version that Gradle can parse

export JAVA_TOOL_OPTIONS='-Djava.version=1.9'
react-native run-android

@see JavaVersion.java and JavaVersionSpec.groovy

Upvotes: 2

Related Questions