Android引入QuickBooks相关依赖后出现Jackson重复类错误如何解决
Android集成QuickBooks Jackson重复类解决方案
你遇到的重复类问题核心是两个原因:
- 引入的
ipp-v3-java-devkit和oauth2-platform-api使用了jar-with-dependencies分类器,属于自带所有依赖的胖包,内部已经打包了完整的Jackson库 - 之前的排除规则写错了Jackson的groupId,正确的Jackson annotations的groupId是
com.fasterxml.jackson.core不是com.fasterxml.jackson,所以排除未生效
方案1:修正依赖排除规则
替换你的依赖配置为以下内容:
implementation ('com.intuit.quickbooks-online:ipp-v3-java-data:6.2.0') { exclude group: "com.sun.istack", module: "istack-commons-runtime" exclude group: "com.sun.xml.bind", module: "jaxb-impl" exclude group: "org.glassfish.jaxb", module: "jaxb-runtime" exclude group: "org.springframework", module: "spring-jcl" exclude group: "org.apache.httpcomponents" } implementation (group: 'com.intuit.quickbooks-online', name: 'ipp-v3-java-devkit', version: '6.2.0', classifier: 'jar-with-dependencies') { exclude group: "org.apache.httpcomponents" // 正确排除Jackson相关包 exclude group: "com.fasterxml.jackson.core" exclude group: "com.fasterxml.jackson.databind" exclude group: "com.fasterxml.jackson.module" } implementation (group: 'com.intuit.quickbooks-online', name: 'oauth2-platform-api', version: '6.2.0', classifier: 'jar-with-dependencies') { exclude group: "org.apache.httpcomponents" // 正确排除Jackson相关包 exclude group: "com.fasterxml.jackson.core" exclude group: "com.fasterxml.jackson.databind" exclude group: "com.fasterxml.jackson.module" }
配置完成后执行./gradlew clean再重新构建项目。
方案2:全局强制统一Jackson版本
如果修正排除规则后仍有冲突,在模块级build.gradle的android闭包同级添加全局版本锁定配置:
configurations.all { resolutionStrategy { // 全局强制指定Jackson版本,覆盖所有依赖引入的Jackson版本 force 'com.fasterxml.jackson.core:jackson-annotations:2.9.0' force 'com.fasterxml.jackson.core:jackson-core:2.9.0' force 'com.fasterxml.jackson.core:jackson-databind:2.9.0' } }
方案3:弃用胖包依赖,改用普通依赖
如果以上方案都无效,放弃使用带jar-with-dependencies分类器的胖包,改用普通版本的依赖,自行按需引入缺失的依赖:
// 去掉classifier,使用普通版本依赖 implementation 'com.intuit.quickbooks-online:ipp-v3-java-devkit:6.2.0' implementation 'com.intuit.quickbooks-online:oauth2-platform-api:6.2.0'
普通版本不会自带第三方依赖,不会出现内置类冲突的问题,缺失的依赖可以根据编译报错单独引入即可。
方案4:兜底方案,构建时排除重复类
如果还有残留的重复类报错,在android闭包下添加packagingOptions配置,构建时直接过滤重复的类文件:
android { // 其他配置... packagingOptions { exclude 'com/fasterxml/jackson/annotation/**' exclude 'com/fasterxml/jackson/core/**' exclude 'com/fasterxml/jackson/databind/**' } }
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

