首页 > 解决方案 > Android:如何在导入 FAT JAR 时排除重复的类?

问题描述

导入 FAT JAR 后,出现编译错误:

More than one file was found with OS independent path 'kotlin/collections/MapWithDefault.kotlin_metadata'

问题是某些类是重复的

Duplicate class kotlin.ArrayIntrinsicsKt found in modules com.fiskaly.kassensichv.client-android-0.0.1-alpha-all.jar (com.fiskaly.kassensichv.client-android-0.0.1-alpha-all.jar) and kotlin-stdlib-1.3.50.jar (org.jetbrains.kotlin:kotlin-stdlib:1.3.50)
Duplicate class kotlin.BuilderInference found in modules com.fiskaly.kassensichv.client-android-0.0.1-alpha-all.jar (com.fiskaly.kassensichv.client-android-0.0.1-alpha-all.jar) and kotlin-stdlib-1.3.50.jar (org.jetbrains.kotlin:kotlin-stdlib:1.3.50)
Duplicate class kotlin.Deprecated found in modules com.fiskaly.kassensichv.client-android-0.0.1-alpha-all.jar (com.fiskaly.kassensichv.client-android-0.0.1-alpha-all.jar) and kotlin-stdlib-1.3.50.jar (org.jetbrains.kotlin:kotlin-stdlib:1.3.50)
Duplicate class kotlin.DeprecationLevel found in modules com.fiskaly.kassensichv.client-android-0.0.1-alpha-all.jar (com.fiskaly.kassensichv.client-android-0.0.1-alpha-all.jar) and kotlin-stdlib-1.3.50.jar (org.jetbrains.kotlin:kotlin-stdlib:1.3.50)
Duplicate class kotlin.DslMarker found in modules com.fiskaly.kassensichv.client-android-0.0.1-alpha-all.jar (com.fiskaly.kassensichv.client-android-0.0.1-alpha-all.jar) and kotlin-stdlib-1.3.50.jar (org.jetbrains.kotlin:kotlin-stdlib:1.3.50)
Duplicate class kotlin.ExceptionsKt found in modules com.fiskaly.kassensichv.client-android-0.0.1-alpha-all.jar (com.fiskaly.kassensichv.client-android-0.0.1-alpha-all.jar) and kotlin-stdlib-1.3.50.jar (org.jetbrains.kotlin:kotlin-stdlib:1.3.50)
Duplicate class kotlin.ExceptionsKt__ExceptionsKt found in modules com.fiskaly.kassensichv.client-android-0.0.1-alpha-all.jar (com.fiskaly.kassensichv.client-android-0.0.1-alpha-all.jar) and kotlin-stdlib-1.3.50.jar (org.jetbrains.kotlin:kotlin-stdlib:1.3.50)
Duplicate class kotlin.Experimental found in modules com.fiskaly.kassensichv.client-android-0.0.1-alpha-all.jar (com.fiskaly.kassensichv.client-android-0.0.1-alpha-all.jar) and kotlin-stdlib-1.3.50.jar (org.jetbrains.kotlin:kotlin-stdlib:1.3.50)
Duplicate class kotlin.Experimental$Level found in modules com.fiskaly.kassensichv.client-android-0.0.1-alpha-all.jar (com.fiskaly.kassensichv.client-android-0.0.1-alpha-all.jar) and kotlin-stdlib-1.3.50.jar (org.jetbrains.kotlin:kotlin-stdlib:1.3.50)
...

我的问题是,如何从 FAT JAR 文件中排除某些类。我试过了:

implementation files('libs/com.fiskaly.kassensichv.client-android-0.0.1-alpha-all.jar'){
        exclude group: 'kotlin'
    }

但它返回一个错误,因为基于文件的依赖项与来自存储库的依赖项的工作方式不同。没有与之关联的元数据(例如,没有依赖信息),因此也没有什么可以排除的(因为没有传递依赖)。

标签: javaandroidgradlejarduplicates

解决方案


推荐阅读