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

Intuit QuickBooks依赖出现Duplicate class类冲突 尝试exclude后仍未解决

类冲突问题解决方案

根本原因

你尝试的全局排除模块方案不生效,是因为com.intuit.quickbooks-online的ipp-v3-java-devkit和oauth2-platform-api两个依赖使用的是带内置依赖的胖包(fat jar),org.apache.http相关类已经被直接打包进这两个jar包内部,并非通过传递依赖引入,因此常规的模块排除规则无法拦截到内置的重复类。

可落地解决方案

方案1:替换为无内置依赖的普通版本(优先推荐)

Intuit官方针对这两个依赖提供了不捆绑第三方依赖的普通版本,你只需要修改依赖声明,移除jar-with-dependencies的分类器即可:

// 修改前的依赖(仅示例,替换成你原有声明)
// implementation 'com.intuit.quickbooks-online:ipp-v3-java-devkit:5.0.2:jar-with-dependencies'
// implementation 'com.intuit.quickbooks-online:oauth2-platform-api:5.0.2:jar-with-dependencies'

// 修改后的依赖
implementation 'com.intuit.quickbooks-online:ipp-v3-java-devkit:5.0.2'
implementation 'com.intuit.quickbooks-online:oauth2-platform-api:5.0.2'
// 统一指定httpclient版本,避免传递依赖版本冲突
implementation 'org.apache.httpcomponents:httpclient:4.5.14'

修改完成后清理构建缓存重新编译即可。

方案2:打包时排除重复类(适用于必须使用胖包的场景)

如果因为业务要求必须使用带依赖的胖包,可以通过配置打包规则直接排除重复的类文件:

  • 如果你是Android项目:
android {
    packagingOptions {
        // 单独排除冲突类
        exclude 'org/apache/http/impl/client/CloseableHttpClient.class'
        // 如有多个同包下的重复类,可批量排除整个http包
        exclude 'org/apache/http/**'
    }
}
  • 如果你是普通Java/Gradle项目:
jar {
    // 单独排除冲突类
    exclude 'org/apache/http/impl/client/CloseableHttpClient.class'
    // 批量排除整个http包
    exclude 'org/apache/http/**'
}

验证步骤

修改配置后执行以下命令验证修复结果:

  • 检查依赖树:./gradlew dependencies(Windows系统替换为gradlew.bat dependencies)
  • 验证构建结果:./gradlew clean build

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:27:02