> com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复条目:org / apache / commons / collections / ArrayStack.class

时间:2016-03-17 03:18:11

标签: java android gradle

我在android studio上运行android应用程序时遇到异常,如下所示:

<!-- IE required polyfills, in this exact order -->
<script src="../../node_modules/es6-shim/es6-shim.min.js"></script>
<script src="../../node_modules/systemjs/dist/system-polyfills.js"></script>
<script src="../../node_modules/angular2/es6/dev/src/testing/shims_for_IE.js"></script>

<script src="../../node_modules/angular2/bundles/angular2-polyfills.js"></script>
<script src="../../node_modules/systemjs/dist/system.src.js"></script>
<script src="../../node_modules/rxjs/bundles/Rx.js"></script>
<script src="../../node_modules/angular2/bundles/angular2.dev.js"></script>
<script>
      System.config({
        packages: {
          app: {
            format: 'register',
            defaultExtension: 'js'
          }
        }
      });
      System.import('../components/main')
            .then(null, console.error.bind(console));
</script>

找到 commons-beanutils-1.8.0.jar commons-collections-3.2.1.jar ,它们都包含相同的类(org / apache / commons) /collections/ArrayStack.class)位于项目的外部库。

我不知道为什么这两个罐子包含在这里以及我的build.gradle如下:

com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: org/apache/commons/collections/ArrayStack.class

如何解决此异常以及为什么 commons-beanutils-1.8.0.jar commons-collection-3.2.1.jar 下载并位于外部库?提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

如果没有您的工作区,就很难说哪个依赖项与 commons-beanutils-1.8.0.jar commons-collection-3.2.1.jar 相关,问题是因为commons-beanutils-1.8.0.jar已更新。 Commons BeanUtils描述详细信息。

  

BeanUtils的1.7.x和1.8.x版本分发了三个jar:

     

commons-beanutils.jar - 包含所有内容   commons-beanutils-core.jar - 排除Bean Collections类   commons-beanutils-bean-collections.jar - 仅限Bean Collections类   主commons-beanutils.jar具有对Commons Collections的可选依赖

在您看到这种情况时,我建议您更新以使用commons-beanutils-1.9.0

找到使用commons-beanutils&amp;的库。公地的集合。您只需访问here即可搜索您在项目中使用的所有依赖项。例如commons-httpclient:3.1,您可以在详细描述下找到编译依赖项。

希望这可以帮到你。

更新: 就像@EpicPandaForce所说,使用gradle dependencies更简单。感谢EpicPandaForce。 我只是像问题一样运行相同的依赖项,并得到以下可以回答这个问题。

+--- net.sf.json-lib:json-lib:2.4
|    +--- commons-beanutils:commons-beanutils:1.8.0
|    |    \--- commons-logging:commons-logging:1.1.1 -> 1.2
|    +--- commons-collections:commons-collections:3.2.1
|    +--- commons-lang:commons-lang:2.5
|    +--- commons-logging:commons-logging:1.1.1 -> 1.2
|    \--- net.sf.ezmorph:ezmorph:1.0.6
|         \--- commons-lang:commons-lang:2.3 -> 2.5

net.sf.json-lib这就是这两个图书馆的来源。

答案 1 :(得分:0)

错误:

  

错误:任务':app:transformClassesWithJarMergingForDebug'的执行失败。   com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复条目:org / hamcrest / BaseDescription.class

Gradle文件依赖项:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile files ('jackson-annotations-2.2.2.jar')
    compile files ('jackson-core-2.2.2.jar')
    compile files ('jackson-databind-2.2.2.jar')
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile 'com.android.support:design:23.0.1'
    compile group: 'cz.msebera.android' , name: 'httpclient', version: '4.4.1.1'
    compile 'com.google.android.gms:play-services-maps:7.8.0'
    compile 'com.google.android.gms:play-services-location:7.8.0'
    compile 'com.github.orangegangsters:swipy:1.2.2@aar'
    compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') {
        transitive = true;
    }
    compile('com.crashlytics.sdk.android:crashlytics-ndk:1.1.2@aar') {
        transitive = true;
    }
}