如何解决重复的类java.lang.RuntimeException:重复的类com.google.zxing.client

时间:2019-07-25 11:53:32

标签: android gradle zxing

我目前正面临重复课程RuntimeException。在当前的用例中,我们正在生成使用com.journeyapps:zxing-android-embedded的工件。我们的客户希望包含我们的工件,但是他们在编译过程中得到了RuntimeException。 发生异常是因为他们使用的com.google.zxing当前与我们正在使用的zxing的travelapps端口冲突。 Journeyapps将ZXing Android应用程序移植为Android库项目,以嵌入到Android应用程序中。

Caused by: java.util.concurrent.ExecutionException: java.lang.RuntimeException: Duplicate class com.google.zxing.client.android.camera.CameraConfigurationUtils found in modules android-core-3.3.0.jar (com.google.zxing:android-core:3.3.0) and classes.jar (com.journeyapps:zxing-android-embedded:3.6.0)

Go to the documentation to learn how to <a href="d.android.com/r/tools/classpath-sync-errors">Fix dependency resolution errors</a>.
        at com.android.ide.common.workers.ExecutorServiceAdapter.await(ExecutorServiceAdapter.kt:56)
        ... 71 more
Caused by: java.lang.RuntimeException: Duplicate class com.google.zxing.client.android.camera.CameraConfigurationUtils found in modules android-core-3.3.0.jar (com.google.zxing:android-core:3.3.0) and classes.jar (com.journeyapps:zxing-android-embedded:3.6.0)

Go to the documentation to learn how to <a href="d.android.com/r/tools/classpath-sync-errors">Fix dependency resolution errors</a>.
        at com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable.run(CheckDuplicateClassesDelegate.kt:132)
        at com.android.ide.common.workers.ExecutorServiceAdapter$submit$submission$1.run(ExecutorServiceAdapter.kt:40)
        ... 72 more

我试图排除gradle构建文件中的重复类。使用以下代码,反之亦然。

implementation("com.google.zxing:android-core:3.3.0")
implementation("module which includes com.journeyapps:zxing-android-embedded:3.6.6") {
        exclude group: 'com.google.zxing', module: 'android-core'
    }

没有解决方案。 我什至试图排除配置中的模块。如果这样做,在插入依赖项时会丢失它。

您可以使用以下代码重现该错误

implementation("com.google.zxing:android-core:3.3.0")
implementation("com.journeyapps:zxing-android-embedded:3.6.0")

当我试图解决问题很多小时而没有解决方案时,我非常感谢每一个建议。

3 个答案:

答案 0 :(得分:1)

这为我解决了

Android/app/build.gradle文件中添加以下代码

configurations {
compile.exclude group: 'com.google.zxing'
}

答案 1 :(得分:0)

尝试使用此传递标志可能会帮助您

implementation("module which includes com.journeyapps:zxing-android-embedded:3.6.6") {
        exclude group: 'com.google.zxing', module: 'android-core'
        transitive = false
    }

答案 2 :(得分:0)

我们得出的结论是,不能排除依赖项,因为在某些使用com.journeyapps:zxing和com.google.zxing的类的情况下,它们是一个命名问题。

我们最终将库从com.journeyapps:zxing迁移到com.google.zxing。

感谢PJain的建议。