将Gradle与OpenJDK 1.9一起使用

时间:2016-12-02 04:43:08

标签: gradle react-native openjdk gradlew

我似乎无法将Gradle与OpenJDK 1.9一起使用。

当我运行以下命令时:

react-native run-android

我最终得到了这个错误。

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

运行java -version告诉我:

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)

我有什么想法可以解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

您使用的是哪个版本的gradle?

cd android
./gradlew -version

我认为确定java 1.9版本的错误已在Gradle 2.10中修复。

另一个选择是尝试欺骗Gradle可以解析的java.version

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

@see JavaVersion.javaJavaVersionSpec.groovy

答案 1 :(得分:1)

这似乎与您构建的OpenJDK 9和Gradle不兼容。

您的OpenJDK版本是:

openjdk version "9-internal"

看来Gradle无法解析它:

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

看起来gradle是prepared to accept 9-ea, but not 9-internal。 你将不得不修改你的OpenJDK版本,让它返回" 9-ea"或java -version的类似内容。

构建OpenJDK 9时,以下配置选项可以解决这个问题:

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

答案 2 :(得分:-1)

我有同样的问题,在我的情况下,它通过删除OpenJDK起作用:

var auditEntry = new AuditEntity
{
                EntryId = Guid.NewGuid(),
                Action = uri.ToString(),
                GeoLocation = geoLocation,
                Time = DateTime.Now
};

并安装Oracle Java SDK:

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

我知道这不是确切的答案(使用Gradle with OpenJDK 1.9),但我设法继续在虚拟设备和智能手机中运行应用程序。希望它有所帮助。

注意:我在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

中正在运行react-native: 0.40.0react-native-cli: 2.0.1