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

添加Google Cloud Translation API后出现commons-codec类重复冲突如何解决

依赖冲突解决方案

问题根因

JetEncryptor_v19.aar内部已经内置了org.apache.commons.codec包下的所有类,而Google Cloud Translation API会默认传递引入commons-codec:1.15依赖,两者的类全路径完全重复,导致构建时报重复类错误。全局排除commons-codec后,Google翻译API运行时需要调用的DigestUtils类无来源,所以抛出类找不到异常。

可行方案

方案1:仅排除Google Cloud Translation API传递的commons-codec依赖(推荐)

不要使用全局排除commons-codec的配置,仅在引入谷歌翻译API的依赖项上单独排除commons-codec,让翻译API自动使用JetEncryptor中内置的commons-codec类即可:

dependencies {
    // 把你原有引入谷歌云翻译API的代码修改为如下格式,仅在该依赖上排除commons-codec
    implementation('com.google.cloud:google-cloud-translate:你使用的版本号') {
        exclude group: 'commons-codec', module: 'commons-codec'
    }
    // 其余原有依赖(包括JetEncryptor_v19的引入)保持不变即可
}

方案2:强制指定依赖版本规则

如果方案1未生效,可以在app模块的build.gradle中添加依赖 resolutionStrategy 规则,统一commons-codec的版本:

configurations.all {
    resolutionStrategy {
        // 强制所有依赖使用统一版本的commons-codec,可根据JetEncryptor内置的版本调整版本号
        force 'commons-codec:commons-codec:1.15'
        // 优先使用项目内置的aar/模块中的类
        preferProjectModules()
    }
}

注意:使用该方案时需要删除你之前添加的全局排除commons-codec的配置。

方案3:重命名JetEncryptor内部的codec包

如果上述方案都因为JetEncryptor内置的commons-codec版本过旧,和谷歌翻译API不兼容导致报错,可以通过JarJar、shadow等打包工具,将JetEncryptor内部的org.apache.commons.codec包重命名为自定义包名(例如com.jet.encryptor.codec),完全避免包名重复冲突,双方依赖可以独立运行互不影响。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:39:04