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

如何修复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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:12:37