重复类 org.apache.commons

Posted

技术标签:

【中文标题】重复类 org.apache.commons【英文标题】:Duplicate class org.apache.commons 【发布时间】:2020-10-09 18:20:09 【问题描述】:

我正在尝试在 android 上运行构建。我正在为 Java 库构建 React-Native 桥接器。但是,我收到Duplicate class 错误,如下所示:

Duplicate class org.apache.commons.lang3.builder.CompareToBuilder 
found in modules commons-lang3-3.9.jar (org.apache.commons:commons-lang3:3.9) 
and creditCardNfcReader-1.0.3-runtime.jar (com.github.pro100svitlo:creditCardNfcReader:1.0.3)

打印出这些错误的完整列表。还有一个稍微不同的错误,如下所示:

Duplicate class bolts.BoltsExecutors$ImmediateExecutor found in 
modules bolts-tasks-1.4.0.jar (com.parse.bolts:bolts-tasks:1.4.0) 
and jetified-bolts-android-1.1.2.jar (com.parse.bolts:bolts-android:1.1.2)

我的依赖项目前在我的 build.gradle 文件中如下所示:

dependencies 
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation "com.facebook.react:react-native:+"
implementation 'com.github.pro100svitlo:creditCardNfcReader:1.0.3'
    addUnimodulesDependencies()

    if (enableHermes) 
        def hermesPath = "../../node_modules/hermes-engine/android/";
        debugImplementation files(hermesPath + "hermes-debug.aar")
        releaseImplementation files(hermesPath + "hermes-release.aar")
     else 
        implementation jscFlavor
    

我试图从依赖项中排除模块和组,但还没有成功。以下是我根据多个来源的建议尝试过的几种方法:

1.

implementation ("com.facebook.react:react-native:+") 
exclude group: 'com.parse.bolts', module: 'bolts-tasks'
 

2.

implementation ("com.facebook.react:react-native:+")  exclude module: 'bolts-tasks'

3.

dependencies 
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation "com.facebook.react:react-native:+"
implementation 'com.github.pro100svitlo:creditCardNfcReader:1.0.3'
    addUnimodulesDependencies()

    if (enableHermes) 
        def hermesPath = "../../node_modules/hermes-engine/android/";
        debugImplementation files(hermesPath + "hermes-debug.aar")
        releaseImplementation files(hermesPath + "hermes-release.aar")
     else 
        implementation jscFlavor
    


configurations  runtime.exclude group: '*' 

如果能帮助我找到解决此问题的方法,我将不胜感激。提前致谢。

【问题讨论】:

【参考方案1】:

依赖的配置闭包的 exclude 方法排除了传递依赖。因此,如果您的模块依赖项依赖于其他模块,您可以将它们从构建中排除。您可以在其 maven repo 上查看 'com.facebook.react:react-native:+' 模块的传递依赖关系。 https://mvnrepository.com/artifact/com.facebook.react/react-native/0.20.1

尝试指定依赖的版本而不是使用'+'以避免冲突。

这里是检查解决插件和依赖 jar 冲突的一些参考。

jarjar package reference

【讨论】:

以上是关于重复类 org.apache.commons的主要内容,如果未能解决你的问题,请参考以下文章

为啥内部类的扩展会得到重复的外部类引用?

类定义参数与普通类定义[重复]

Java:静态与内部类[重复]

重复类 MultiDex$V14.class

在非上下文类中使用上下文类构造函数[重复]

在另一个类中声明一个类[重复]