获取java.lang.IllegalArgumentException:已添加:Lcom / google / inject / AbstractModule

时间:2013-09-17 17:43:20

标签: android gradle android-studio roboguice

我正在使用带有gradle构建工具的android studio。我正在尝试使用RoboGuice进行依赖注入。 这是我的builde.gradle混淆

   buildscript {
    repositories {
        mavenCentral()
        maven { url 'http://repo1.maven.org/maven2' }

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}

    apply plugin: 'android'

    repositories{
    mavenCentral()
}


    android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 11
        targetSdkVersion 16
    }
}

    dependencies {
    compile 'com.android.support:support-v4:13.0.0'
    compile 'org.roboguice:roboguice:2.0'
    compile 'com.google.inject:guice:3.0'
    compile 'com.google.code.findbugs:jsr305:1.3.9'
    compile 'com.j256.ormlite:ormlite-android:4.46'
    compile 'com.j256.ormlite:ormlite-core:4.46'
}

这些是我尝试构建时的日志

 UNEXPECTED TOP-LEVEL EXCEPTION:
    java.lang.IllegalArgumentException: already added: Lcom/google/inject/AbstractModule;
        at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
        at com.android.dx.dex.file.DexFile.add(DexFile.java:163)
        at com.android.dx.command.dexer.Main.processClass(Main.java:490)
        at com.android.dx.command.dexer.Main.processFileBytes(Main.java:459)
        at com.android.dx.command.dexer.Main.access$400(Main.java:67)
        at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:398)
        at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:245)
        at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131)
        at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109)
        at com.android.dx.command.dexer.Main.processOne(Main.java:422)
        at com.android.dx.command.dexer.Main.processAllFiles(Main.java:333)
        at com.android.dx.command.dexer.Main.run(Main.java:209)
        at com.android.dx.command.dexer.Main.main(Main.java:174)
        at com.android.dx.command.Main.main(Main.java:91)

1 个答案:

答案 0 :(得分:5)

roboguice依赖于guice(我认为它是版本2.0)。您必须排除此传递依赖项,因为您已经将guice-3.0作为编译依赖项。

要从传递依赖项中排除guice,请将其放在依赖项中:

dependencies {
   ...
   compile ('org.roboguice:roboguice:2.0') {
      exclude module: 'guice'
   }
}