2015-08-24 70 views
1

我想在我的Android Studio項目中安裝RoboGuice作爲依賴項。一旦我嘗試運行該項目(甚至在我添加任何新代碼之前),我就會崩潰並輸出:添加RoboGuice作爲依賴時出錯

信息:Gradle任務[:app:assembleDebug] :app:preBuild UP-TO- DATE :應用:preDebugBuild UP-TO-DATE :應用程序:checkDebugManifest :應用:preReleaseBuild UP-TO-DATE :應用:prepareComAndroidSupportAppcompatV72300Library UP-TO-DATE :應用:prepareComAndroidSupportSupportV42300Library UP-TO-DATE :應用程序: prepareComMcxiaokeVolleyLibraryAar100Library UP-TO-DATE :app:prepareDebugDependencies :app:compileDebugAidl UP-TO-DATE :app:compileDebugRenderscript UP-TO-DATE :應用程序:generateDebugBuildConfig UP-TO-DATE :應用程序:generateDebugAssets UP-TO-DATE :應用程序:mergeDebugAssets UP-TO-DATE :應用程序:generateDebugResValues UP-TO-DATE :應用程序:generateDebugResources UP-TO-DATE :應用程序:mergeDebugResources UP-TO-DATE :應用程序:processDebugManifest UP-TO-DATE :應用程序:processDebugResources UP-TO-DATE :應用程序:generateDebugSources UP-TO-DATE :應用程序:processDebugJavaRes UP-TO-DATE :app:compileDebugJava 注意:某些輸入文件使用或覆蓋棄用的API。 注意:使用-Xlint:deprecation重新編譯以獲取詳細信息。 :應用:compileDebugNdk UP-TO-DATE :應用程序:compileDebugSources :應用程序:preDexDebug :應用:dexDebug 意外頂級例外: com.android.dex.DexException:多DEX文件定義Ljavax /注入/供應商; at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596) at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554) at com.android.dx.merge。 DexMerger.mergeClassDefs(DexMerger.java:535) at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171) at com.android.dx.merge.DexMerger.merge(DexMerger.java:189) at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454) at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303) at com.android。 dx.command.dexer.Main.run(Main.java:246) at com.android.dx.command.dexer.main.main(Main.java:215) at com.android.dx.command.Main。主要(Main.java:106) E rror:執行任務':app:dexDebug'失敗。

com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2 Information:BUILD FAILED Information:Total time: 10.274 secs Information:1 error Information:0 warnings Information:See complete output in console

這裏是我的gradle這個文件:

的build.gradle(模塊) 應用插件: 'com.android.application'

android { 
    compileSdkVersion 23 
    buildToolsVersion "21.1.2" 

    defaultConfig { 
     applicationId "com.mysite.myapp" 
     minSdkVersion 15 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:23.0.0' 
    compile 'com.google.code.gson:gson:2.3.1' 
    compile 'com.mcxiaoke.volley:library-aar:1.0.0' 
    compile 'javax.inject:javax.inject:1' 
    compile 'org.roboguice:roboguice:3.+' 
} 

的build.gradle(項目)

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

buildscript { 
    repositories { 
     jcenter() 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.2.3' 

     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
     mavenCentral() 
    } 
} 

我完全困惑。任何人都可以看到我做錯了什麼?謝謝。

+1

無論如何,你是否已將'dependencies'中指定的任何庫放在libs文件夾中?如果可能,請張貼您的libs文件夾內容的屏幕截圖。 –

+0

爲什麼你要爲你的依賴添加編譯'javax.inject:javax.inject:1'?如果在使用gradle時不需要使用imho,Roboguice應該解決對它自己的依賴。 – FWeigl

+0

@Ascorbin - 我一直在玩依賴注入的各種嘗試。這是從一個較早的方法遺留下來的,但似乎是重複的來源。如果你提出它作爲答案,我會接受它。謝謝! – Alex

回答

1

Roboguice會帶來它的「自己」 javax.inject作爲依賴,所以當你宣佈compile 'javax.inject:javax.inject:1'有導致

Multiple dex files define Ljavax/inject/Provider

其中2只是刪除了javax.inject依賴。