【问题标题】:Java.exe finished with non-zero exit value 2 in Android StudioJava.exe 在 Android Studio 中以非零退出值 2 结束
【发布时间】:2016-03-21 00:26:18
【问题描述】:

当我添加 compile 'org.apache.httpcomponents:httpmime:4.2.3' 后出现此错误。找不到解决方案我还在默认配置部分尝试了多个 dex 文件 true。我还尝试创建另一个运行成功的测试应用。

错误:任务 ':app:transformClassesWithDexForDebug' 执行失败。 com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_79 \bin\java.exe'' 以非零退出值 2 结束

这是我的 build.gradle 文件。

apply plugin: 'com.android.application'

    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.2"

        defaultConfig {
            applicationId "com.example.qualwebs.assistme"
            minSdkVersion 19
            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'])
        testCompile 'junit:junit:4.12'
        compile 'com.android.support:appcompat-v7:23.1.1'
        compile 'com.android.support:design:23.1.1'
        compile 'de.hdodenhof:circleimageview:2.0.0'
        compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
        compile 'com.oguzdev:CircularFloatingActionMenu:1.0.2'
        compile 'com.getbase:floatingactionbutton:1.10.1'
        compile 'org.apache.httpcomponents:httpmime:4.2.3'
    }

【问题讨论】:

  • 将 useLibrary 'org.apache.http.legacy' 添加到您的 gradle 文件中的 android 块下。检查this。从现在开始,Apache HTTP Client 现在是遗留类。
  • compile 'org.apache.httpcomponents:httpmime:4.5.1'
  • 关于multidex,你还得在Application类中做个改动(你必须扩展MultiDexApplication),或者如果你不扩展Application,把android:name="android.support.multidex .MultiDexApplication" 在清单中的应用程序标签上。

标签: java android android-studio


【解决方案1】:

Android SDK 构建工具中提供的用于 Gradle 的 Android 插件 21.1 及更高版本支持将 multidex 作为构建配置的一部分。确保更新 Android SDK Build Tools 工具和 Android 之前使用 SDK Manager 支持 Repository 到最新版本 尝试为您的应用配置 multidex。

将您的应用开发项目设置为使用 multidex 配置需要您对应用开发项目进行一些修改。特别是您需要执行以下步骤:

  1. 更改 Gradle 构建配置以启用 multidex
  2. 修改清单以引用 MultiDexApplication 类

修改您的应用 Gradle 构建文件配置以包含支持库并启用 multidex 输出。

    android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        ...
        minSdkVersion 19
        targetSdkVersion 23
        ...

        // Enabling multidex support.
        multiDexEnabled true
    }
    ...
}

dependencies {
  compile 'com.android.support:multidex:1.0.1'
}

在您的清单中,将 multidex 支持库中的 MultiDexApplication 类添加到应用程序元素。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.multidex.myapplication">
    <application
        ...
        android:name="android.support.multidex.MultiDexApplication">
        ...
    </application>
</manifest>

已编辑

你可以使用

compile 'org.apache.httpcomponents:httpmime:4.5.1' 

阅读

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

【讨论】:

  • 感谢您的回答...我尝试了您给出的解决方案,但仍然出现此类错误。
  • 错误:任务 ':app:transformClassesWithJarMergingForDebug' 执行失败。 > com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复条目:org/apache/http/ConnectionClosedException.class
  • 好的。测试用例注释掉compile 'org.apache.httpcomponents:httpmime:4.2.3'
  • 谢谢.. 问题已解决。我已经使用了更高版本的compile 'org.apache.httpcomponents:httpmime:4.5.1' 和你的解决方案谢谢你的帮助。
【解决方案2】:

你有 multidex 文件的问题,所以请在你的应用程序 Gradle 文件中添加以下依赖项。

compile 'com.android.support:multidex:1.0.1'

同时添加这一行:

defaultConfig {

    applicationId 'pkg'
    minSdkVersion 
    targetSdkVersion 
    versionCode 
    versionName 

    // Enable MultiDexing:  https://developer.android.com/tools/building/multidex.html
    multiDexEnabled true
}

在 Manifest.xml 中添加以下内容:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.multidex.myapplication">
    <application
        ...
        android:name="android.support.multidex.MultiDexApplication">
        ...
    </application>
</manifest>

已编辑:

尝试以下方法:

更改设置

Ctrl + Alt + S -> 编译器 -> Gradle

InVM 选项字段写入:

-Xmx2048m -XX:MaxPermSize=512m

在gradle中添加

dexOptions { javaMaxHeapSize "2g" }

谢谢..!!

【讨论】:

  • @Arslan Ahmad:谢谢..!!
【解决方案3】:

这个问题很可能是由于超过了 Android 规定的 65K 方法 dex 限制。这个问题可以通过清理项目,从 build.gradle 中的依赖项中删除一些未使用的库和方法,或者通过添加 multidex 支持来解决。

所以,如果你必须保留库和方法,那么你可以通过在 gradle config 中声明来启用多 dex 支持。

defaultConfig {        
// Enabling multidex support.
multiDexEnabled true
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 2015-12-27
    相关资源
    最近更新 更多