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.invoke(GradleCompilerEnvironment.kt:23)
        at org.jetbrains.kotlin.compilerRunner.GradleCompilerEnvironment$toolsJar.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 更改我的环境变量时,如下所示:

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 11 版本,而你的 gradle 只兼容较低的 JDK 版本。

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

编辑:所以 google 表示您至少需要 Gradle 5.0 才能使用 JDK 11 :)

你必须使用 JDK 8,但你正在使用 JDK 11。

这对我有用

  1. gradle.org OR from services.gradle.org
  2. 下载 Gradle
  3. 将下载的文件解压到C://
  4. 更新 System Environment Variables 中的 /bin 路径 运行程序并检查问题是否已解决?如果仍然出现错误,请继续下一步
  5. 下载JavaSE 运行时间环境8u261here
  6. 更新 System Environment Variables 中的 /bin 路径 这将解决问题。让我知道你是否仍然有错误

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

 $ update-alternatives --config javac

 $ update-alternatives --config java

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

gradle-wrapper.properties中添加以下行

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

替换为 JDK

的路径

我曾经为 flutter

构建 integration_test