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 文件夹的路径。
这是我的 .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 文件夹的路径。