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

Gradle构建中compileDevDebugJavaWithJavac与kspDevDebugKotlin的JVM目标不兼容

Android项目JVM目标兼容性不匹配问题解决

问题描述

构建Android项目时出现JVM目标版本不匹配错误:

'compileDevDebugJavaWithJavac'任务(当前目标版本为17)与'kspDevDebugKotlin'任务(当前目标版本为1.8)的JVM目标兼容性需设置为同一Java版本。

当前配置

模块级build.gradle核心配置

android {
    compileOptions {
        // Flag to enable support for the new language APIs
        isCoreLibraryDesugaringEnabled = true
    }
    kotlinOptions {
        freeCompilerArgs = listOf("-Xjvm-default=all")
    }

    kotlin {
        jvmToolchain(17)
    }

    composeOptions { kotlinCompilerExtensionVersion = "1.5.2" }
}

模块级插件配置

plugins {
    id("com.android.application")
    id("org.jetbrains.kotlin.android")
    kotlin("kapt")
    id("com.google.devtools.ksp").version("1.9.0-1.0.13")
}

项目级build.gradle插件配置

plugins {
    id("com.android.application") version "8.2.0" apply false
    id("com.android.library") version "8.2.0" apply false
    id("org.jetbrains.kotlin.android") version "1.9.0" apply false
}

已尝试操作

  • 通过kotlin.jvmToolchain(17)设置Kotlin的JVM目标为17,但ksp任务仍使用Java 1.8
  • Android Studio的Kotlin编译器设置已指定为17
  • 相同配置的空白项目可正常编译,gradle.properties无差异

解决方案

1. 明确指定Java编译版本

在android.compileOptions中显式设置source和target版本,确保Java编译任务的目标版本清晰:

android {
    compileOptions {
        isCoreLibraryDesugaringEnabled = true
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }
    // 保留原有其他配置
}

2. 为KSP任务单独指定JVM工具链

KSP任务可能不会自动继承kotlin的工具链配置,需要单独配置:

tasks.withType(com.google.devtools.ksp.gradle.KspTask) {
    kotlin.jvmToolchain(17)
}

3. 清理构建缓存后重新构建

执行Gradle清理和重构建任务,清除旧缓存:

./gradlew clean rebuild

验证

完成配置修改后,重新构建项目,错误应该会消失。如果仍有问题,可尝试同步Gradle并重启Android Studio。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 23:07:31