如何修复Android项目中kapt与Java、Kotlin的Dagger版本兼容问题?
解决JVM目标版本不兼容问题(Java/Kotlin 1.8 + Kapt)
要解决compileDebugJavaWithJavac和kaptGenerateStubsDebugKotlin的JVM目标版本不一致问题,核心是统一Java和Kotlin的编译目标为1.8,并确保Kapt配置正确,具体步骤如下:
1. 统一JVM目标版本配置
在build.gradle(:app)的android代码块中,添加或修改编译选项,强制Java和Kotlin都使用1.8版本:
android { // 保留原有配置(比如defaultConfig、buildTypes等) compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } }
2. 确认Kapt插件正确应用
检查plugins块是否已经引入kotlin-kapt插件,确保位置正确:
plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id 'kotlin-kapt' // 必须添加这一行,放在Kotlin插件之后 }
3. 验证Dagger依赖兼容性
你当前使用的Dagger 2.41版本完全兼容Java 1.8,无需修改依赖版本,保持现有配置即可:
dependencies { implementation 'com.google.dagger:dagger:2.41' kapt 'com.google.dagger:dagger-compiler:2.41' implementation 'javax.inject:javax.inject:1' }
4. 清理并重建项目
修改配置后,执行以下操作确保生效:
- 执行命令行清理:
./gradlew clean(Windows系统用gradlew clean) - 在Android Studio中点击
File -> Sync Project with Gradle Files同步配置 - 重新构建项目(Build -> Make Project)
注意事项
如果项目包含多个模块,需要在所有模块的build.gradle中同步上述compileOptions和kotlinOptions配置,避免跨模块的版本不一致问题。你之前切换到Java 17后崩溃,大概率是项目中其他依赖或代码未适配Java 17,回到1.8是更稳妥的选择。
内容的提问来源于stack exchange,提问作者Just Spectator99
相关产品推荐
相关产品推荐

