如何解决Jetified模块中javax.annotation类重复冲突问题?
解决Javax.annotation.Detainted类重复冲突方案
方案一:精准排除冲突依赖
你之前排除的是org.jetbrains:annotations,但冲突实际发生在IN-NistComponent-1.3.1和jsr305-3.0.2之间,需要针对这两个模块做精准处理:
- 如果组件是通过Maven坐标引入的,排除其内置的
jsr305依赖:
dependencies { implementation("你的组件groupId:IN-NistComponent:1.3.1") { exclude(group = "com.google.code.findbugs", module = "jsr305") } }
- 如果是本地jar依赖,直接手动打开jar包删除
javax.annotation.Detainted类文件,或者让同事处理。
方案二:强制统一依赖版本
通过Gradle依赖解析策略,强制所有模块使用同一个版本的jsr305,避免重复引入:
configurations.all { resolutionStrategy { force("com.google.code.findbugs:jsr305:3.0.2") } }
方案三:指定重复类优先级(Android项目适用)
如果是Android项目,可通过packagingOptions指定保留哪个模块的冲突类:
android { packagingOptions { pickFirst("javax/annotation/Detainted.class") } }
方案四:让同事重新打包组件jar
直接联系开发IN-NistComponent-1.3.1.jar的同事,让他在打包时排除javax.annotation相关类——jsr305是标准公开依赖,组件jar没必要内置重复类。
内容的提问来源于stack exchange,提问作者alpheonix
相关产品推荐
相关产品推荐

