You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JVM目标版本不兼容:编译任务版本不一致求助

问题原因

Kotlin 1.8.x版本起,默认JVM目标版本升级到了17,但你的Android Gradle插件(AGP)默认Java编译目标仍为1.8。kapt注解处理器任务会跟随Kotlin的JVM目标版本,而Java编译任务保持默认的1.8,两者版本不一致触发了兼容性异常。你之前仅配置kotlinOptions但未同步调整Java编译目标版本,因此问题未解决。

修复步骤

1. 统一JVM目标版本(二选一)

需同时配置Kotlin和Java的编译目标版本,确保两者一致:

方案一:使用Java 17(适配Kotlin 1.8默认设定)

在android块内添加compileOptions并保留kotlinOptions:

android {
    // ... 原有配置
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }
    kotlinOptions {
        jvmTarget = '17'
    }
}

方案二:继续使用Java 8

将版本统一调整为1.8:

android {
    // ... 原有配置
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
}

2. 适配依赖版本

你的项目混合使用了com.android.support库与androidx.room,Room 2.5.2要求AGP版本至少7.0.0,建议升级根目录build.gradle中的AGP版本以避免额外兼容问题:

// 根目录build.gradle的dependencies块
dependencies {
    classpath 'com.android.tools.build:gradle:7.4.2'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.21"
    // ... 其他classpath配置
}
查看各任务Java版本的方法

通过Gradle命令行可直接查看任务配置:

  • 查看Java编译任务的目标版本:
    ./gradlew compileDebugJavaWithJavac --info | grep "target compatibility"
    
  • 查看Kapt任务的JVM目标:
    ./gradlew kaptGenerateStubsDebugKotlin --info | grep "jvmTarget"
    

内容的提问来源于stack exchange,提问作者user1785730

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 15:30:07