【问题标题】:Gradle error when importing mongoDB jar driver导入 mongoDB jar 驱动程序时出现 Gradle 错误
【发布时间】:2016-03-09 17:04:02
【问题描述】:

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

错误:任务 ':app:dexDebug' 执行失败。 com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_25\bin\java.exe'' 用非完成零退出值 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 ...

【问题讨论】:

    标签: java android mongodb android-studio jar


    【解决方案1】:

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

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

    您也可以参考this 回答,将您的 google-play-services 减少到您实际需要的。

    【讨论】:

      【解决方案2】:

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

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

      第一行声明依赖于 libs 目录中的所有内容。然后第二行在 libs 文件夹中添加对特定 jar 的另一个依赖项,这已经在第一行中介绍过。您实际上是在告诉 gradle 使用该 jar 两次,这可能会导致问题。您可能还会收到来自 gradle 的消息,要求您使用不同的命令行标志再次运行构建以查看更详细的错误,所以也这样做。

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

      【讨论】:

      • 您是否按照 gradle 的建议使用不同的标志再次运行它以查看更多详细信息?
      • 我不知道该怎么做你告诉我的。如果您能提供指导,将不胜感激:) 我在 gradle 控制台上得到这个 > 尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。
      • 我编辑了这个问题,如果这是你想要我做的,我运行'gradle compileDebug --stacktrace'
      • 看起来你给了它一个无效的目标。使用与 Android Studio 相同的:assembleDebug
      猜你喜欢
      • 2017-05-23
      • 1970-01-01
      • 2014-02-02
      • 2016-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-30
      • 2017-11-07
      相关资源
      最近更新 更多