繁体   English   中英

Android - 无法在 JRE 上编译 - 确保 Gradle 在 JDK 而不是 JRE 上运行

[英]Android - Can't compile on JRE - Make sure Gradle is running on a JDK, not JRE

我想从命令行编译我的应用程序,而不是从 Android Studio。 当我将它从 Android Studio 启动到我的设备/模拟器时,我的应用程序运行良好,但是当我尝试执行以下操作时:

gradlew build

我得到:

> Task :app:kaptGenerateStubsReleaseKotlin FAILED
Caught an exception trying to connect to Kotlin Daemon
org.gradle.api.GradleException: Kotlin could not find the required JDK tools in the Java installation 'C:\Program Files (x86)\Java\jre1.8.0_191' used by Gradle. Make sure Gradle is running on a JDK, not JRE.
        at org.jetbrains.kotlin.gradle.tasks.JarSearchingUtilKt.findToolsJar(jarSearchingUtil.kt:95)
        at org.jetbrains.kotlin.compilerRunner.GradleCompilerEnvironment$toolsJar$2.invoke(GradleCompilerEnvironment.kt:23)
        at org.jetbrains.kotlin.compilerRunner.GradleCompilerEnvironment$toolsJar$2.invoke(GradleCompilerEnvironment.kt:17)
        at kotlin.SynchronizedLazyImpl.getValue(Lazy.kt:131)
        ...

这是我的 JAVA_HOME 环境变量:

JAVA_HOME=C:\Program Files (x86)\Java\jre1.8.0_191

它实际上是一个 JRE(而不是 JDK),但是,当我通过我的 JDK 更改我的 env var 时,如下所示:

JAVA_HOME=C:\Program Files\Java\jdk-11.0.1    

我启动:

gradlew build

然后我得到:

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine java version from '11.0.1'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

您必须使用 JDK 8,但您使用的是 JDK 11。

当您的 gradle 仅兼容较低的 JDK 版本时,它可能会抱怨您尝试使用 JDK 11 版本的事实。

简短的回答是 - 下载 JDK 1.8.something 版本并尝试使用它,替代的(可能是更好的长期)答案是将您的 gradle 版本升级到最新版本(即 JDK 11 兼容版本)。

编辑:所以谷歌说你至少需要 Gradle 5.0 才能使用 JDK 11 :)

gradle-wrapper.properties添加以下行

org.gradle.java.home=/usr/lib/jvm/java-8-openjdk-amd64

替换为 JDK 的路径

我曾经为flutter构建integration_test

这对我有用

  1. gradle.orgservices.gradle.org下载Gradle
  2. 将下载的文件解压到C://
  3. 更新System Environment Variables的/bin路径运行程序查看问题是否解决? 如果您仍然遇到错误,请继续下一步
  4. 在此处下载Java SE 运行时环境 8u261
  5. 更新System Environment Variables的 /bin 路径这将解决问题。 让我知道你是否还有错误

就我而言, javajavac有不同的版本。 检查并配置:

 $ update-alternatives --config javac

 $ update-alternatives --config java

这篇文章很有帮助。 我看到这篇文章适用于 Windows,但使用 Ubuntu 的人可能会发现这个答案很有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM