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。
这对我有用
- 从 gradle.org OR from services.gradle.org
下载 Gradle
- 将下载的文件解压到
C://
- 更新
System Environment Variables
中的 /bin 路径
运行程序并检查问题是否已解决?如果仍然出现错误,请继续下一步
- 下载JavaSE 运行时间环境8u261here
- 更新
System Environment Variables
中的 /bin 路径
这将解决问题。让我知道你是否仍然有错误
就我而言,java
和 javac
有不同的版本。签出并配置:
$ 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
我想从命令行编译我的应用程序,而不是从 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。
这对我有用
- 从 gradle.org OR from services.gradle.org 下载 Gradle
- 将下载的文件解压到
C://
- 更新
System Environment Variables
中的 /bin 路径 运行程序并检查问题是否已解决?如果仍然出现错误,请继续下一步 - 下载JavaSE 运行时间环境8u261here
- 更新
System Environment Variables
中的 /bin 路径 这将解决问题。让我知道你是否仍然有错误
就我而言,java
和 javac
有不同的版本。签出并配置:
$ 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