Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to resolve duplicate class error in gradle build?

I have tried to use ibm tone analyzer api for my project, but if I include the dependency I get this error:

Duplicate class javax.annotation.CheckForNull found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2) Duplicate class javax.annotation.CheckForSigned found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)

I have tried to delete testing dependencies, but still won't work, please help

App File:

apply plugin: 'com.android.application'

android {
    configurations.all{

            resolutionStrategy.cacheChangingModulesFor 0, 'seconds'

    }
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.loginapp"
        minSdkVersion 22
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {

    implementation fileTree(dir: 'libs', include: ['*.jar'])

    //noinspection GradleCompatible
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    compile 'com.ibm.watson:tone-analyzer:7.0.0'
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
        exclude module: 'jsr305:3.0.2'

    })
    implementation 'com.google.firebase:firebase-auth:16.2.1'

}
// Add the following line to the bottom of the file:
apply plugin: 'com.google.gms.google-services'  // Google Play services Gradle plugin

Gradle Build file:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        google()
        jcenter()


    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.0'
        classpath 'com.google.gms:google-services:4.2.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {

    repositories {

        maven {
            url  "https://dl.bintray.com/ibm-cloud-sdks/ibm-cloud-sdk-repo"
        }

        google()
        jcenter()

    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
like image 560
Eshwar NE Avatar asked May 07 '19 16:05

Eshwar NE


People also ask

How do you fix a duplicate class in Java?

In such a case, the module is copied in the javasource folder in the app directory with a new name and the old folder is kept, resulting in two identical folders with different names. Simply delete the copied folder with the modulename that is not used and you should be fine.

What does duplicate class mean?

The "duplicate class" error can also occur when the class is named the same with the same package naming hierarchy, even if one of the classes exists in a directory structure with directory names different than the package names.


1 Answers

add applicationVariants.all to your gradle.build:

android {
    applicationVariants.all { variant ->
        variant.getRuntimeConfiguration().exclude group: 'com.google.code.findbugs', module: 'jsr305'
    }
}
like image 129
Jamol Bao Avatar answered Oct 20 '22 09:10

Jamol Bao