1

我正在使用带有 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)
4

1 回答 1

5

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

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

dependencies {
   ...
   compile ('org.roboguice:roboguice:2.0') {
      exclude module: 'guice'
   }
}
于 2013-09-17T20:48:08.660 回答