如何解决 Duplicate class java.lang.RuntimeException: Duplicate class com.google.zxing.client

问题描述 投票:0回答:5

我目前面临着重复的课程

RuntimeException
。在我们当前的用例中,我们正在生成一个使用
com.journeyapps:zxing-android-embedded
的工件。我们的客户想要包含我们的工件,但他们在编译过程中得到了
RuntimeException
。 发生异常是因为他们使用的是
com.google.zxing
,目前与我们正在使用的 zxing 的旅程应用程序端口发生冲突。 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")

由于我尝试了很多小时都没有解决问题,所以我非常感谢每一个建议。

android gradle zxing
5个回答
11
投票

这个解决了我的问题

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

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

2
投票

尝试使用这个传递标志也许这可以帮助你

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

2
投票

感谢您的评论,我解决了如下图所示的问题

dependencies {
    configurations.all {
        exclude group: 'com.google.zxing'
    }
}

android {
  compileSdkVersion 33
  defaultConfig {
    minSdkVersion 17
    generatedDensities = []
    multiDexEnabled true
    versionCode 1
    versionName "1.0.0"
  }
  aaptOptions {
    additionalParameters "--no-version-vectors"
  }
}

0
投票

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

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

感谢 PJain 的建议。


0
投票

我应该如何迁移库?

© www.soinside.com 2019 - 2024. All rights reserved.