Android 和 Gradle(Java 以非零退出值 2 结束)

Android with Gradle (Java finished with non-zero exit value 2)

这是我的 .gradle 文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

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

    packagingOptions {
        exclude 'META-INF/license.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/NOTICE'
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'

    compile 'com.mcxiaoke.volley:library:1.0.15'
    compile 'org.glassfish.jersey.media:jersey-media-json-jackson:2.17'
}

当我尝试 运行 我的 Android 应用程序时,出现下一个错误:

错误:任务“:app:dexDebug”执行失败。

com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/java-8-oracle/bin/java'' finished with non-zero exit value 2

当我将 jackson 库添加到 gradle 文件时出现此错误。 谷歌搜索了一段时间,我发现 jackson 库与 android 应用程序兼容,而且它比 gson 等其他库更快。

我该如何解决? 我是 Android 初学者。

我认为你应该改变你的 java JDK 为 jdk7 改变 jvm v8。 link 可以帮助您: Is it possible to use Java 8 for Android development?

其他可能的问题是它的依赖错误,在构建之前清理 gradle。并为此更改您的 jackson 库:

compile 'com.fasterxml.jackson.core:jackson-databind:2.2.+'
compile 'com.fasterxml.jackson.core:jackson-core:2.2.+'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.2.+'

令人不安的是,这个问题可能有几个原因。在我的例子中,这是因为超过了最大行数。令人讨厌的是 Android Studio 显示的消息没有任何意义,但不知何故我找到了如下解决方案:

https://developer.android.com/tools/building/multidex.html

您必须创建一个扩展 MultiDexApplication 的 class,并覆盖以下方法:

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }

不要忘记在您的 AndroidManifest 文件中添加 "name" 内部标记,如上 link.

所述

我已经在 my_project/app/libs 中复制了所需的库,并在 build.gradle 中添加了依赖项。因此,就我而言,我删除了我在 my_project/app/libs 中复制的库。由于 gradle 维护所有依赖项,因此我不必将库放在 /libs 中。这解决了我的问题。

也许你有一个依赖导致不兼容

例如:

修复 JDK 路径解决了问题。

右键单击 项目 > 打开模块设置 > SDK 位置 > 在 JDK 位置下给出 JDK 文件夹的路径。