org.apache.commons.collections.ArrayStack 已经添加到输出中。请删除重复的副本

Posted

技术标签:

【中文标题】org.apache.commons.collections.ArrayStack 已经添加到输出中。请删除重复的副本【英文标题】:org.apache.commons.collections.ArrayStack has already been added to output. Please remove duplicate copies 【发布时间】:2015-02-12 00:36:06 【问题描述】:

我仍在 Macbook Air 上使用 android Studio 0.8.9。在我的 iMac 上,我安装了 Android Studio 1.0。

由于 1.0 仅支持 'com.android.tools.build:gradle:1.0.0' 我不得不更改我的 build.gradles 正如这里提到的。 Gradle DSL method not found: 'runProguard'

0.8.9 使用 'com.android.tools.build:gradle:0.12.2'

apply plugin: 'com.android.application'

android 
    compileSdkVersion 20
    buildToolsVersion "20.0.0"

    defaultConfig 
         applicationId "com.example...."
         minSdkVersion 19
         targetSdkVersion 20
         versionCode 1
         versionName "0.87"
    
    buildTypes 
         release 
             minifyEnabled false
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
         
    
    packagingOptions 
         exclude 'META-INF/LICENSE.txt'
         exclude 'LICENSE.txt'
         exclude 'META-INF/NOTICE.txt'
    
    dexOptions 
         preDexLibraries = false
     

repositories 
     mavenCentral()
     flatDir 
     dirs 'libs'
     

dependencies 
    compile fileTree(dir: 'libs', include: ['*.jar'])
    wearApp project(':wear')
     compile 'com.android.support:support-v4:20.0.+'
     compile 'com.google.android.gms:play-services-wearable:+'
     compile 'com.spotify.sdk:spotifysdk:1.0.0-beta6@aar'
     compile('se.michaelthelin.spotify:spotify-web-api-java:1.4.20') 

使用 MacBook Air 上的 0.8.9 测试版,我的应用程序构建良好。在我的 iMac 上出现此错误。

更新 问题似乎是 commons-collections 添加到外部库和 commons-beanutils 中,其中还包括 commons-collections。

编译('se.michaelthelin.spotify:spotify-web-api-java:1.4.20') 排除组:“commons-beanutils”,模块:“commons-beanutils”

如果我排除 commons-beanutils,构建过程很好,但应用程序崩溃,因为它需要 commons-beanutils。如果我排除公共集合,则相同。

此外,我尝试从 commons-beanutils jar 中手动删除文件夹 common-collections,但这也不起作用..

【问题讨论】:

【参考方案1】:

终于成功了。

这个不包括公共集合,所以一切正常。 编译'commons-beanutils:commons-beanutils:20030211.134440'

不明白为什么在 beta 0.8.9 中不需要这样做

compile('se.michaelthelin.spotify:spotify-web-api-java:1.4.20') 
        exclude group: "commons-beanutils", module: "commons-beanutils"

    
    compile 'commons-beanutils:commons-beanutils:20030211.134440'

【讨论】:

【参考方案2】:

试试:

project > clean

project > rebuild

然后再次运行

【讨论】:

已经试过了,项目重建工作,但它在运行时抛出同样的错误。 尝试删除所有生成的目录(build、bin 等)并再次清理和重建。如果这不起作用,您必须搜索哪些库具有此类并排除其中一个。 感谢您的帮助,编译 'net.sf.json-lib:json-lib:2.4:jdk15' 导致了问题。如果我删除它(并删除我的 java 文件)它运行没有错误。 json-lib 也有 org.apache.commons.collections,参见mvnrepository.com/artifact/net.sf.json-lib/json-lib/2.4。那么如何在 build.gradle 中排除它呢? 这可行,但现在我的应用程序在运行时崩溃了。 :-( compile ('net.sf.json-lib:json-lib:2.4:jdk15') 排除组:“commons-collections”,模块:“commons-collections”

以上是关于org.apache.commons.collections.ArrayStack 已经添加到输出中。请删除重复的副本的主要内容,如果未能解决你的问题,请参考以下文章