84

错误:

Gradle: Execution failed for task ':vertretungsplan:dexDebug'.
> Failed to run command:
    P:\Android-Studio\sdk\build-tools\18.0.1\dx.bat --dex --output P:\Projekte\VertretungsplanProject\vertretungsplan\build\libs\vertretungsplan-debug.dex P:\Projekte\VertretungsplanProject\vertretungsplan\build\classes\debug P:\Projekte\VertretungsplanProject\vertretungsplan\build\dependency-cache\debug P:\Android-Studio\sdk\extras\android\m2repository\com\android\support\support-v4\18.0.0\support-v4-18.0.0.jar P:\Projekte\VertretungsplanProject\vertretungsplan\libs\commons-io-2.4.jar P:\Projekte\VertretungsplanProject\vertretungsplan\build\exploded-bundles\VertretungsplanProjectLibrariesActionbarsherlockUnspecified.aar\classes.jar
Error Code:
    2
Output:
    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    ...while parsing de/MayerhoferSimon/Vertretungsplan/LoginActivity$2.class
    ...while processing de/MayerhoferSimon/Vertretungsplan/LoginActivity$2.class
    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    ...while parsing de/MayerhoferSimon/Vertretungsplan/MainActivity$1.class
    ...while processing de/MayerhoferSimon/Vertretungsplan/MainActivity$1.class
    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    ...while parsing de/MayerhoferSimon/Vertretungsplan/YQL/YqlVplanParser.class
    ...while processing de/MayerhoferSimon/Vertretungsplan/YQL/YqlVplanParser.class
    3 warnings
    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dx.util.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
        at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:592)
        at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:550)
        at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:531)
        at com.android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.java:168)
        at com.android.dx.merge.DexMerger.merge(DexMerger.java:186)
        at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:300)
        at com.android.dx.command.dexer.Main.run(Main.java:232)
        at com.android.dx.command.dexer.Main.main(Main.java:174)
        at com.android.dx.command.Main.main(Main.java:91)

项目结构:

在此处输入图像描述

build.gradle (actionbarsherlock)

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android-library'

dependencies {
    compile 'com.android.support:support-v4:18.0.0'
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 11
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            res.srcDirs = ['res']
        }
    }
}

build.gradle (vertretungsplan)

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

dependencies {
    compile files('libs/commons-io-2.4.jar')
    compile project(':libraries:actionbarsherlock')
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 11
    }
}

设置.gradle

include ':vertretungsplan', ':libraries:actionbarsherlock'

我该如何解决这个错误?

4

22 回答 22

90

正确的答案是,您的某些 jar 文件无法编译。您应该进入项目中的 build.gradle 文件,并查看您的依赖项。

如果您只是导入一些 jar 文件,您可以尝试删除它们并一次添加一个。这将帮助您确定其中哪一个导致错误。

就我而言,我就是这样做的,当我导入最后一个时,应用程序已编译。所以我认为真正的问题是我一次导入了太多。但现在一切正常。

于 2013-09-26T07:48:38.373 回答
69

I suddenly had the same problem, after no noteworthy changes.

I solved it by deleting the app/build directory and let gradle build the whole project new.

于 2015-05-10T15:04:16.353 回答
15

您必须检查是否再次导入相同的 JAR。就我而言,一个罐子里有一个类,它被导入另一个罐子。因此,只需检查整个项目中是否包含任何 lib / 类文件两次!

于 2013-10-20T06:38:55.197 回答
4

我也有同样的问题。就我而言,问题在重新启动后开始。我关闭了我的应用程序,然后关闭了 Android Studio(在我的情况下为 V1.1.0),最后正常关闭。之后,我修改了一个java文件添加了一个RadioGroup对象,然后问题就出现了。

我解决了我的问题,只是在我的 Gradle 配置文件中将一个简单的 '0' 更改为 '1',因为问题的根本原因是在 Gradle 执行过程中产生的。以前我曾经有版本“1.0.0”,然后我将其更改为“1.1.0”,如图所示。

Gradle 配置的位置已更改 Gradle 配置的位置已更改

我从中获取正确版本的位置(文件->设置-> Gradle->实验 我从中获取正确版本的位置(文件->设置-> Gradle->实验

于 2015-03-25T21:25:39.373 回答
4

当我尝试使用 Java JRE 1.8 在 eclipse 中编译一个 utils 库 jar 并在我的 Android Studio 1.1.0 中的 /libs/ 中使用它时,我遇到了同样的错误。

我将我的 Android Studio 设置为使用 JDK1.8.0。

我将我的 Eclipse 切换为使用 JRE 1.7,并且错误已修复。Eclipse:Window->Preferences->Java tab->Compiler -> Compliance level 1.7。它很可能会提示您将 JRE 系统库切换到 jdk1.7.x_x。

您可能需要确保在导出时取消选中“压缩 jar”。我没有测试它是否有效果。我怀疑这有关系。

于 2015-03-12T17:32:31.250 回答
4

问题不在于Execution failed for task ':dexDebug'

如果您查看以红色显示的错误上方,您将看到这个

在此处输入图像描述

要永久解决此问题,只需在build.gradle文件中添加这些行

android {
    dexOptions {
        jumboMode = true
    }
}

有关更多详细信息,请检查此问题:here

于 2015-09-28T20:07:56.507 回答
3

确保您的 AndroidManifest 文件在清单节点中包含包名称。设置包名称为我解决了这个问题。

于 2014-01-10T13:56:15.040 回答
3

ANDROID STUDIO 用户可以试试这个:-

您需要将以下内容添加到您的 gradle 文件依赖项中:

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

然后将下面的行(multidex support application)添加到清单的application标签中:

android:name="android.support.multidex.MultiDexApplication"
于 2015-11-08T10:28:20.767 回答
2

可以通过添加来解决这个问题

compile 'com.android.support:support-v4:18.0.0'

到vertretungsplan build.gradle中的依赖项,编译然后删除这一行并再次编译。

现在它可以工作了

于 2013-08-03T01:19:25.633 回答
1

我遇到了这个问题,因为我尝试同时使用支持库和 appcompat:

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile 'com.android.support:support-v4:23.1.0'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.google.android.gms:play-services:8.3.0'
}

在我删除支持库并更改为旧版本后,它编译:

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    /*compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'*/
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.android.support:design:22.2.0'
    compile 'com.google.android.gms:play-services:8.3.0'
}
于 2015-11-17T12:28:57.817 回答
1

我有同样的问题,你应该这样做:

File -> Invalidate Caches / Restart

于 2015-10-22T13:25:30.343 回答
1

我有两个不兼容的依赖项。

以下依赖项导致了错误。

compile 'com.google.android.gms:play-services-fitness:8.3.0'
compile 'com.google.android.gms:play-services-wearable:8.4.0'

通过将健身依赖项更改为 8.4.0 版本,我能够运行该应用程序。

compile 'com.google.android.gms:play-services-fitness:8.4.0'
compile 'com.google.android.gms:play-services-wearable:8.4.0'
于 2016-01-21T04:32:56.370 回答
0

一个原因可能是从 Eclipse IDE 导入后的库重复。

dependencies {
compile 'com.github.japgolly.android:svg-android:2.0.5'
compile 'com.google.android.gms:play-services:+'
compile 'com.android.support:appcompat-v7:21.0.3'
compile files('libs/androidannotations-api-2.7.1.jar')
compile files('libs/androidasync-2.1.2.jar')
//compile files('libs/google-play-services.jar')
compile files('libs/universal-image-loader-1.8.2.jar')}

我有同样的问题,评论后:

//compile files('libs/google-play-services.jar')

该应用程序没有错误。

于 2015-04-08T13:43:02.407 回答
0

我发现 Android Studio 和 mircrosoft 升级到网络浏览器的一个非常有趣的问题。我“愚蠢地”升级到最新版本的ie。当然,微软以其无限的智慧确切地知道如何处理安全问题。当我尝试编译我的应用程序时,我不断收到错误 Gradle - build failed -- Execution failed for task。查看堆栈,我发现它无法识别 java.exe 的路径。我发现这很奇怪,因为我前一天才能够编译。我将 JAVA_HOME 添加到系统的环境变量中,关闭 Android Studio 并重新打开它。看看防火墙是否没有弹出询问我是否要通过所有 jave.exe。

什么集群!

于 2014-06-21T17:40:01.533 回答
0

(这可能是错误的线程,因为您的问题似乎更具体,但这是我在搜索问题关键字时发现的线程)

尽管有所有好的提示,但唯一对我有帮助的东西,我想分享以防万一,如果其他一切都不起作用:

删除主目录中的.gradle目录,并让 Android Studio 为您重新构建/重新下载它。

为我修复了所有无法通过重新安装 Android Studio 本身或 SDK 来修复的奇怪错误。

于 2015-01-27T14:09:07.100 回答
0

我遇到了同样的问题。这样做解决了。转到 actionbarsherlock -> 模块设置 -> 依赖项。删除支持 v4 库。在左下角有一个加号按钮,从那里添加 1 个库依赖项(选择 support-v4)。完成后让 gradle 重新同步和清理项目。

于 2015-06-07T15:43:33.220 回答
0

这里的许多答案都是反复试验以查找重复的依赖项,但是如果您从该行向上滚动一点,Execution failed for task ':app:dexDebug'.它会给您提示重复项

错误提示.

就我而言,我有以下错误:

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define L/com/parse/AbstractQueryController$1;
...
...
...
Execution failed for task ':app:dexDebug'.

所以我知道为了修复这个错误,我需要找到定义的重复依赖项parse.AbstractQueryController

就我而言,我有两个导入的模块正在加载到两个不同的 Parse 库中。让我的项目只加载一个解决了我的问题。

于 2015-10-04T23:52:48.913 回答
0

当我的一个类文件中的包拼写错误时,我也遇到了这个错误。其中许多答案会立即跳转到 Jar 文件,但我也会检查以确保您的包拼写正确。

于 2015-11-02T16:20:07.113 回答
0

就我而言,我做到了Build > Clean Project,而且奏效了!

于 2015-10-04T14:35:37.013 回答
0

如果您也在使用Dagger或者Butterknife您应该将 guava 作为依赖项添加到您的build.gradle主文件中,例如 classpath :

com.google.guava:guava:20.0

另一方面,如果您在 Gradle 守护程序的较大堆上遇到问题,您可以增加添加到radle文件中:

 dexOptions {
        javaMaxHeapSize "4g"
    } 
于 2017-03-09T15:21:09.740 回答
0

只需添加 build.gradle

编译'com.parse.bolts:bolts-android:1.+'

编译'com.parse:parse-android:1.11.0'

并将项目与 Gradle 文件同步,在此处输入图像描述 但不要在库中添加解析 Jar :) OKK

于 2015-12-25T23:22:44.657 回答
-1

使用菜单栏中的构建清理项目适用于 Android Studio 中的许多错误场景,在这种情况下也是如此。

于 2016-04-01T16:05:18.663 回答