导入mongoDB jar驱动程序时出现Gradle错误

时间:2016-03-09 17:04:02

标签: java android mongodb android-studio jar

在android studio中导入this mongoDB jar驱动程序时,我遇到gradle问题。我收到了这个错误:

  

错误:任务':app:dexDebug'执行失败。   com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:进程'命令' C:\ Program Files \ Java \ jdk1.8.0_25 \ bin \ java.exe& #39;'完成非零退出值2

当我导入mongo-java-driver-2.13.0-rc0.jar驱动程序时,我对此没有任何问题。我不知道这是否相关,但首先我导入了这个驱动程序,然后任何其他mongoDB驱动程序都有这个错误,除了我首先添加的这个。这是我的gradle文件

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
    useLibrary 'org.apache.http.legacy'

    repositories {
        mavenCentral()
        jcenter()

    }

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

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.0'
    compile 'com.google.android.gms:play-services:8.3.0'
    compile 'com.android.support:design:23.1.0'
    compile 'com.android.support:percent:23.1.0'
    compile 'com.facebook.android:facebook-android-sdk:4.7.0'
    compile 'de.hdodenhof:circleimageview:2.0.0'
    compile 'com.isseiaoki:simplecropview:1.0.13'
    compile files('libs/mongo-java-driver-3.2.0-SNAPSHOT.jar')

对stackoverflow中类似问题的任何回答都没有帮助,所以非常感谢任何帮助!

编辑:我创建了一个新项目并且没有错误,所以显然项目出了问题,而不是使用grandle文件或jar

修改 当我运行gradle compileDebug --stacktrace时,我得到以下

* Exception is:             
org.gradle.execution.TaskSelectionException: Task 'compileDebug' is ambiguous in root project 'Maps'. Candidates are: 'compileDebugAidl', 'compileDebugAndroidTestAidl', 'compileDebu
gAndroidTestJavaWithJavac', 'compileDebugAndroidTestNdk', 'compileDebugAndroidTestRenderscript', 'compileDebugAndroidTestSources', 'compileDebugJavaWithJavac', 'compileDebugNdk', 'c
ompileDebugRenderscript', 'compileDebugSources', 'compileDebugUnitTestJavaWithJavac', 'compileDebugUnitTestSources'.
        at ...

2 个答案:

答案 0 :(得分:0)

看起来你在这两个依赖项之间依赖于一个jar两次:

compile fileTree(include: ['*.jar'], dir: 'libs')
compile files('libs/mongo-java-driver-3.2.0-SNAPSHOT.jar')

第一行是声明对libs目录中所有内容的依赖。第二行然后在libs文件夹中的特定jar上添加另一个依赖项,这已经在第一行中介绍了。你有效地告诉gradle使用那个罐子两次,这可能会导致问题。您可能还从gradle获取一条消息,使用不同的命令行标志再次运行构建以查看更详细的错误,所以也这样做。

考虑删除其中一个。如果你在libs文件夹中有其他jar,你可能想要删除第二行。

答案 1 :(得分:0)

你可能在android studio项目允许的65k方法限制上有问题。谷歌宣布解决这个问题。您可以找到更多信息here。我有一个类似的问题,这是我的解决方案,所以你可以尝试。

<强>更新 我应该提一下,这可能会严重减少你的gradle构建时间,所以你应该只在没有其他方法的情况下使用它。您可以做的最好的想法是将您使用的库减少到您需要的库。

您还可以参考this回答,将您的google-play-services缩减为您实际需要的服务。