首页 > 基础资料 博客日记

Android Java和Kotlin的目标JVM版本不一致

2025-01-15 04:00:09基础资料围观147

这篇文章介绍了Android Java和Kotlin的目标JVM版本不一致,分享给大家做个参考,收藏Java资料网收获更多编程知识

报错信息

Execution failed for task ‘:app:kaptGenerateStubsDebugKotlin’.

‘compileDebugJavaWithJavac’ task (current target is 1.8) and ‘kaptGenerateStubsDebugKotlin’ task (current target is 17) jvm target compatibility should be set to the same Java version.
Consider using JVM toolchain: https://kotl.in/gradle/jvm/toolchain

报错说明

这个错误消息表明在编译过程中,Java和Kotlin的目标JVM版本不一致。具体来说,Java代码的目标版本是1.8,而Kotlin代码的目标版本是17。为了确保一致性,需要将两个目标JVM版本设置为相同的Java版本。

错误出现场景

升级Gradle8.0,并且用到了Kapt出现

当前环境

Gradle 版本:8.0

APG 版本:8.1.2

kotlin 插件版本:1.8.10

解决方案

一、升JDK版本

build.gradle(:app)

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
    id 'kotlin-kapt'
}

android {
	...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }
    kotlinOptions {
        jvmTarget = '17'
    }
}

将JAVA和KOTLIN的JDK版本指定到高版本解决

二、降JDK版本

考虑到兼容性问题,防止开发时使用到JAVA17新特性,运行到不支持JAVA17的手机上

build.gradle(:app)

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
    id 'kotlin-kapt'
}
android {
	...
    compileOptions {
        // 指定Java编译器使用的源代码版本,这里设置为Java 1.8。这意味着编译器将把代码视为Java 1.8版本的代码。
        sourceCompatibility JavaVersion.VERSION_1_8
        // 指定生成的字节码版本,这里设置为Java 1.8。这意味着编译器将生成可以在支持Java 1.8的JVM上运行的字节码。
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        // 指定Kotlin编译器生成的字节码版本,这里设置为1.8。这意味着Kotlin编译器将生成可以在支持Java 1.8的JVM上运行的字节码。
        jvmTarget = '1.8'
    }
    kotlin {
        // 配置Kotlin编译器使用的JDK版本,这里指定为8。这是指定Kotlin编译器使用JDK 8进行编译。
        jvmToolchain(8)
    }
}

在gradle.properties文件中添加以下属性

# java install path
org.gradle.java.installations.paths=E\:\\Android\\.gradle\\jdks\\corretto-1.8.0_422

E:\Android\.gradle\jdks\corretto-1.8.0_422 改成自己实际的低版本Java路径

详情可以查阅Toolchains for JVM projects (gradle.org),里面详细说明了Toolchain的配置。

查看项目所有的工具链

./gradlew -q javaToolchains

输出结果

  • Options
    | Auto-detection: Enabled
    | Auto-download: Enabled

  • Amazon Corretto JDK 1.8.0_422-b05
    | Location: E:\Android.gradle\jdks\corretto-1.8.0_422
    | Language Version: 8
    | Vendor: Amazon Corretto
    | Architecture: amd64
    | Is JDK: true
    | Detected by: system property ‘org.gradle.java.installations.paths’

  • JetBrains s.r.o. JDK 17.0.6+0-b2043.56-10027231
    | Location: E:\Android\Android Studio\jbr
    | Language Version: 17
    | Vendor: JetBrains s.r.o.
    | Architecture: amd64
    | Is JDK: true
    | Detected by: Current JVM

JAVA JDK下载方式

一、官网
  1. Java Downloads | Oracle
  2. Java | Oracle
二、Android Studio内下载

File -> Project Structure -> SDK Location -> Gradle Settings -> Gradle project -> Gradle JDK -> Download JDK

三、Toolchains for JVM projects (gradle.org)

文章来源:https://blog.csdn.net/qq313629058/article/details/140830053
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云