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

6

我希望能够通过命令行编译我的应用程序,而不是通过Android Studio进行编译。 当我通过Android Studio将应用程序启动到设备/模拟器上时,它可以完美地工作,但是当我尝试通过以下方式进行编译时:

gradlew build

I get :

> 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:

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

2
我发现Android无法使用JDK 11构建,但是使用JDK 8可以正常工作。 - TheWanderer
6个回答

3

您需要使用JDK 8,但是您正在使用JDK 11。


2

它可能在抱怨你正在尝试使用JDK 11版本,而你的gradle只兼容更低版本的JDK。

简短的答案是-下载一个JDK 1.8.x版本并尝试使用它,另一种(也许更好的长期)答案是升级你的gradle版本到最新版(即兼容JDK 11的版本)。

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


1
对于Mac M1芯片的用户,请在gradle.properties中添加以下行:
org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true
org.gradle.java.home=/Applications/Android Studio.app/Contents/jbr/Contents/Home 

你可以找到你的Java Home路径

Android Studio -> 文件 -> 项目结构 -> SDKs -> Android studio Java home

Java Home Path


0
gradle-wrapper.properties 文件中添加以下行:
org.gradle.java.home=/usr/lib/jvm/java-8-openjdk-amd64

替换为您的JDK路径

我曾经为Flutter构建集成测试


-1

这对我有用

  1. gradle.orgservices.gradle.org下载Gradle
  2. 将下载的文件解压缩到C://
  3. 系统环境变量中更新/bin路径 运行程序并检查问题是否已解决?如果仍然出现错误,请继续下一步
  4. 此处下载Java SE Runtime Environment 8u261
  5. 系统环境变量中更新/bin路径 这将解决问题。如果您仍然遇到错误,请告诉我

5
使用粗体的 [已解决] 不是 StackOverflow 的做法。您可以更新为“这个方法对您有用”。 - Flummox - don't be evil SE

-2
在我的情况下,javajavac 版本不同。请检查并进行配置:
 $ update-alternatives --config javac

并且

 $ update-alternatives --config java

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接