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

配置Dagger-Hilt时遇重复类及JVM版本兼容问题求助

解决Dagger-Hilt配置中的Kotlin版本冲突与JVM目标兼容问题

问题根源分析

  1. 重复类错误:Kotlin 1.8+版本开始,kotlin-stdlib-jdk7和kotlin-stdlib-jdk8已合并到核心kotlin-stdlib中,项目同时引入了1.8.10版的核心stdlib和1.7.20版的jdk8stdlib,导致类定义重复。
  2. JVM目标不一致:升级Kotlin版本后,Kotlin编译任务默认的JVM目标版本与Java编译任务的目标版本不匹配,触发兼容性校验错误。

分步解决方案

1. 统一全项目Kotlin版本

在项目根目录的build.gradle中,将Kotlin插件版本统一为1.8.10(和冲突日志中的stdlib版本对齐,彻底消除版本差异):

plugins {
    id 'com.android.application' version '7.4.2' apply false
    id 'com.android.library' version '7.4.2' apply false
    id 'org.jetbrains.kotlin.android' version '1.8.10' apply false
    id 'com.google.dagger.hilt.android' version '2.44' apply false
}

2. 对齐Java与Kotlin的JVM目标版本

在模块级build.gradle的android块中,强制设置Java和Kotlin的编译目标版本一致(以常用的1.8为例,若需使用更高版本如18,同步修改对应配置即可):

android {
    // 其他原有配置...
    
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

3. 移除冗余依赖并强制版本统一

  • 删除模块build.gradle中单独引入的kotlin-stdlib-jdk7、kotlin-stdlib-jdk8依赖(Kotlin 1.8+无需单独依赖这两个库)。
  • 添加版本强制策略,确保所有依赖链中的Kotlin stdlib版本统一:
configurations.all {
    resolutionStrategy.force "org.jetbrains.kotlin:kotlin-stdlib:1.8.10"
    resolutionStrategy.force "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.10"
}
  • 之前添加的constraints配置可以直接移除,上述强制策略更直接有效。

4. 清理缓存并重建项目

执行命令清除构建缓存,避免旧缓存干扰新配置:

./gradlew clean

之后重新运行项目构建即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:27:24