配置Dagger-Hilt时遇重复类及JVM版本兼容问题求助
解决Dagger-Hilt配置中的Kotlin版本冲突与JVM目标兼容问题
问题根源分析
- 重复类错误:Kotlin 1.8+版本开始,
kotlin-stdlib-jdk7和kotlin-stdlib-jdk8已合并到核心kotlin-stdlib中,项目同时引入了1.8.10版的核心stdlib和1.7.20版的jdk8stdlib,导致类定义重复。 - 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
相关产品推荐
相关产品推荐

