Gradle build failed: java.util.zip.ZipException: duplicate entry: org/apache/commons/io/CopyUtils.class
Solution 1
There is an option to fix it on gradle dependency resolution level
configurations.all {
resolutionStrategy.dependencySubstitution {
substitute module('org.apache.commons:commons-io:1.3.2') with module('commons-io:commons-io:1.3.2')
}
}
Reason of the conflict is that org.apache.commons:commons-io:1.3.2
was pushed by mistake https://stackoverflow.com/a/37421794/624706
You can see where dependency is coming from with
gradle :main:dependencyInsight --configuration compile --dependency commons-io
Solution 2
Please use the below code in build.gradle file.
configurations {
all*.exclude group: 'org.apache.commons'
}
Enjoy!!!
Solution 3
Edit 2:
I created a fork of the project that compiles and runs on Android Studio 2.2 preview 7. You can also check out the diff if you don't want to redownload the project.
Edit:
Here is a build.gradle
file that compiled for me. I've commented all the important changes:
apply plugin: 'com.android.application' //IMPORTANT: 'com.android.application' not
android {
compileSdkVersion 24 // compile sdk should always be latest
buildToolsVersion "24.0.1" // Don't know if this matters
defaultConfig {
applicationId "org.wildstang.wildrank.android"
minSdkVersion 14
targetSdkVersion 19 //Looks like this is a new app, why are you using 19 and not 24?
versionCode 1
versionName "1.0"
multiDexEnabled true
}
dexOptions {
javaMaxHeapSize "4g"
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs') //IMPORTANT
//Ignore these, I don't think they are important for you, but I needed them to get my test project to compile
compile 'com.android.support:appcompat-v7:24.1.1'
compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha5'
compile 'com.android.support:design:24.1.1'
// These version numbers worked for me:
compile 'com.android.support:support-v4:24.1.1'
compile 'com.android.support:support-v13:24.1.1'
compile 'de.congrace:exp4j:0.3.11'
compile 'org.apache.commons:commons-io:1.3.2'
}
Try what Maxence Barroy said. If that doesn't work, check out this answer:
compile('com.example:some-dependency:4.2') {
exclude module: 'commons-io'
}
Since I don't know what your build.gradle
file looks like, I can't really help you, but check out this answer too. Also, make sure you have the latest version of Gradle 'com.android.tools.build:gradle:2.2.0-alpha6'
Related videos on Youtube
insanity_serum
Nothing much. Two new lines for one new line seems like a bad concept.
Updated on September 15, 2022Comments
-
insanity_serum over 1 year
When trying to run the app on my nexus 7, the gradle build fails every time and gives the same error:
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: org/apache/commons/io/CopyUtils.class
The error seems to indicate that
CopyUtils.class
fromcommons-io
is being included twice in the build process.The full log:
Information:Gradle tasks [:android:assembleDebug] :android:preBuild UP-TO-DATE :android:preDebugBuild UP-TO-DATE :android:checkDebugManifest :android:preReleaseBuild UP-TO-DATE :android:prepareComAndroidSupportMultidex101Library UP-TO-DATE :android:prepareDebugDependencies :android:compileDebugAidl UP-TO-DATE :android:compileDebugRenderscript UP-TO-DATE :android:generateDebugBuildConfig UP-TO-DATE :android:mergeDebugShaders UP-TO-DATE :android:compileDebugShaders UP-TO-DATE :android:generateDebugAssets UP-TO-DATE :android:mergeDebugAssets UP-TO-DATE :android:generateDebugResValues UP-TO-DATE :android:generateDebugResources UP-TO-DATE :android:mergeDebugResources UP-TO-DATE :android:processDebugManifest UP-TO-DATE :android:processDebugResources UP-TO-DATE :android:generateDebugSources UP-TO-DATE :android:incrementalDebugJavaCompilationSafeguard UP-TO-DATE :android:compileDebugJavaWithJavac UP-TO-DATE :android:compileDebugNdk UP-TO-DATE :android:compileDebugSources UP-TO-DATE :android:prePackageMarkerForDebug :android:transformClassesWithJarMergingForDebug FAILED Error:Execution failed for task ':android:transformClassesWithJarMergingForDebug'. > com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: org/apache/commons/io/CopyUtils.class Information:BUILD FAILED Information:Total time: 11.208 secs Information:1 error Information:0 warnings Information:See complete output in console
Also my build.gradle:
apply plugin: 'android' android { compileSdkVersion 19 buildToolsVersion "19.1.0" defaultConfig { applicationId "org.wildstang.wildrank.android" minSdkVersion 14 targetSdkVersion 19 versionCode 1 versionName "1.0" multiDexEnabled true } dexOptions { javaMaxHeapSize "4g" } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } lintOptions { abortOnError false } } dependencies { compile 'com.android.support:support-v4:19.+' compile 'com.android.support:support-v13:19.+' compile 'de.congrace:exp4j:0.3.+' compile 'org.apache.commons:commons-io:1.3.+' compile fileTree(dir: 'libs', include: ['*.jar']) }
I seem to now get
Error:(43, 0) Gradle DSL method not found: 'com.android.support:support-v4:24.1.1()' Possible causes:
- The project 'wildrank-android-master' may be using a version of Gradle that does not contain the method. Open Gradle wrapper file
- The build file may be missing a Gradle plugin. Apply Gradle plugin
My Gradle wrapper
Wed Jul 06 21:02:27 PDT 2016
distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https://services.gradle.org/distributions/gradle-2.10-all.zip
My new gradle file
apply plugin: 'com.android.application' //IMPORTANT: 'com.android.application' not
android { compileSdkVersion 24 // compile sdk should always be latest buildToolsVersion "24.0.1" // Don't know if this matters
defaultConfig { applicationId "org.wildstang.wildrank.android" minSdkVersion 14 targetSdkVersion 19 //Looks like this is a new app, why are you using 19 and not 24? versionCode 1 versionName "1.0" multiDexEnabled true } dexOptions { javaMaxHeapSize "4g" } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } lintOptions { abortOnError false }
}
dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') //IMPORTANT
//Ignore these, I don't think they are important for you, but I needed them to get my test project to compile // These version numbers worked for me: compile 'com.android.support:support-v4:24.1.1'{exclude group: 'org.apache.commons', module: 'commons-io' } compile 'com.android.support:support-v13:24.1.1'{ exclude module: 'commons-io' } compile 'de.congrace:exp4j:0.3.11'{ exclude module: 'commons-io' } compile 'org.apache.commons:commons-io:1.3.2'{ exclude module: 'commons-io' }
}
-
buczek over 7 yearsPossible duplicate of Android Gradle compiling commons-io creates duplicate in library tree
-
insanity_serum over 7 yearsMy build.gradle has been added to the description
-
SUPERCILEX over 7 yearsI've updated my answer with a build.gradle file that worked for me: I created a fresh project in Android Studio 2.2 and used the above build.gradle file.
-
SUPERCILEX over 7 yearsCan I see the new gradle file? Also, if this is a relatively new project, maybe try just creating a new project using Android Studio. It should set everything up properly and then you can add the dependencies you need again.
-
insanity_serum over 7 yearsIts not new. This is an open source project which I wanted to use for robotics(its allowed by the creators). Its been only having gradle problems. I'll update with the gradle file.
-
SUPERCILEX over 7 yearsI got it working on my Nexus 6P: check out the edit above.
-
Faisal about 7 yearsthis solve the problem, just put this code after declaring maven libraries
-
WillC over 5 yearsExcellent answer: thanks for sharing your build file in full - helps to see it in context. It helped me fix my problem adding protobuf in leading to a conflict on org.apache.commons.lang, which I fixed with an
exclude module: 'commons-lang'