Android Room数据库应用构建报错:intellij与jetbrains注解类重复冲突
问题根源
你遇到的构建错误是类重复冲突,项目依赖同时引入了两个不同来源的JetBrains/IntelliJ注解库:com.intellij:annotations:12.0 和 org.jetbrains:annotations:13.0,两个库包含大量相同全类名的类,导致构建失败。
冲突的直接诱因是你错误地将Room的注解处理器用implementation方式引入,注解处理器的依赖本应仅在编译期生效,用implementation会将它的全部传递依赖也打包到最终产物中,触发冲突。
解决方案
优先尝试方案1,未解决再使用方案2。
方案1:修正Room注解处理器的依赖方式
将dependencies中room-compiler的依赖类型从implementation改为annotationProcessor(Java项目)或者kapt(Kotlin项目,需要提前在模块级build.gradle头部引入kapt插件),同时测试用的room-testing也需要调整为测试依赖,修改后的依赖配置如下:
dependencies { implementation 'androidx.appcompat:appcompat:1.3.1' implementation 'com.google.android.material:material:1.4.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.1' // Room Components implementation 'androidx.room:room-runtime:2.4.0-beta01' // Java项目用annotationProcessor,Kotlin项目把annotationProcessor换成kapt annotationProcessor 'androidx.room:room-compiler:2.4.0-beta01' testImplementation 'androidx.room:room-testing:2.4.0-beta01' // Lifecycle Components implementation 'androidx.lifecycle:lifecycle-viewmodel:2.4.0' implementation 'androidx.lifecycle:lifecycle-livedata:2.4.0' implementation 'androidx.lifecycle:lifecycle-common-java8:2.4.0' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' }
修改后清理项目缓存重新构建即可,90%以上的同类型冲突都可以通过这个方法解决。
方案2:手动排除冲突的注解包
如果修改依赖类型后仍然报错,可以在模块级build.gradle的android配置块下方添加冲突包排除规则:
configurations { all { exclude group: 'com.intellij', module: 'annotations' // 二选一即可,也可以选择排除org.jetbrains的annotations // exclude group: 'org.jetbrains', module: 'annotations' } }
添加后重新构建即可解决冲突。
内容的提问来源于stack exchange,提问作者AI Shakil
相关产品推荐
相关产品推荐

