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

