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
相关产品推荐
相关产品推荐

