2013-08-02 73 views
81

错误:Android的工作室:摇篮 - 构建失败 - 执行失败的任务 ':dexDebug'

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) 

项目结构:

enter image description here

的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 
    } 
} 

settings.gradle

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

如何解决这个问题?

回答

88

正确的答案是,你的一些jar文件不编译。 你应该进入你的项目中的build.gradle文件,并查看你的依赖关系。

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

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

+19

如果你使用./gradlew assemble编译--stacktrace --info它会让你知道哪个jar是坏的 –

+0

如何从libs ....一个一个地导入.jar文件? –

+0

@NirHartmann快速问题,命令我会放在构建gradle中?我不确定它应该放在哪里。 – Fallenreaper

2

可以通过添加

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

在vertretungsplan的build.gradle依赖解决这个问题,编译,然后再次删除此行和编译。

现在的作品

+2

这肯定不是在一般情况下 –

+0

F中的正确答案或者我工作。所以这是一种可能性:) – maysi

+0

为什么'v4:18.0.0'?为什么不'v4:+' –

16

您必须检查是否再次输入相同的JAR。在我的情况下,在一个jar里面有一个类被另一个jar导入。因此,只需检查整个项目中是否包含任何lib/class文件两次!

+1

这对我来说在技术上是正确的,但发生的原因是我的build.gradle文件中的依赖包含两个不同版本的android支持库,其中包括向项目添加新活动之后的两个不同版本。 – Josh

+0

这个问题解决后我还没有完成,但它让我走在路上。谢谢。 –

+0

为我解决了一个问题,但我从来没有想过从错误消息中复制JAR的问题。 我一直将Volley作为模块导入项目级,但因为我希望能够在使用AS构建和用Cordova构建之间切换,所以我设置了我的环境以将Volley作为Cordova插件引入。在某些时候重新生成平台之后,我收到了此错误消息。你关于被两次导入的相同库的评论让我意识到我应该删除'Volley作为导入的库'设置,所以谢谢。 –

3

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

+0

在我的情况下,包名称被复制到2个库子项目中。 –

0

我发现一个非常有趣的问题与Android Studio和微软升级到Web浏览器。我将“愚蠢”升级到ie的最新版本。当然,微软以其无限智慧知道如何处理安全问题。当我试图编译我的应用程序时,我一直收到错误Gradle - 构建失败 - 任务执行失败。看在堆栈中,我看到它没有识别到​​java.exe的路径。我发现这很奇怪,因为我前一天才能编译。我将JAVA_HOME添加到系统的env vars中,关闭了Android Studio并重新打开它。低看,如果防火墙唠叨屏幕不弹出询问我是否想要所有jave.exe通过。

什么是群集!

0

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

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

在你的home目录中删除您.gradle目录,并将它重新构建/由Android工作室重新下载为您服务。

修复了我通过重新安装Android Studio本身和SDK都无法解决的各种奇怪错误。

4

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

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

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

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

+0

谢谢!这解决了我的问题与Android Studio 1.4和Gradle实验-0.2.1;) 我不得不恢复到JDK 1.7.1,但完全修复此问题 – Stef

4

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

我解决了我的问题,只是在我的Gradle配置文件中更改'1'的简单'0',因为问题的根本原因是在Gradle执行过程中生成的。之前我曾经有版本'1.0.0',然后我将它更改为'1.1.0',如图片中所述。

位置的摇篮配置的改变 Location of the Gradle configuration a changed

位置,我做出了正确的版本从(文件 - >设置 - >摇篮 - >导入后的实验 Location where I took the right version from (File -> Settings -> Gradle -> Experimental

+0

更改为gradle toots版本1.1.0为我工作。谢谢! – kalan

+0

保存我的时间。Great –

0

一个原因可以复制库从

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')} 

Eclipse IDE中我有同样的问题,意见之后:

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

该应用没有错误。

+0

您应该从libs文件夹中删除本地jar,并依赖于Central存储库。 – WonderCsabo

65

我突然有同样的问题,没有值得注意的变化。

我通过删除app/build目录解决了这个问题,让gradle构建了新的项目。

+3

这解决了我的问题! – Petro

+2

添加活动以替换主要活动时,此处同样存在问题。我做了一个干净的,但没有奏效。感谢这个解决方案。 – Climbatize

+1

此外,尝试清理应用程序/生成文件夹中的项目,你可能会包括在您的应用程序 – Voy

0

我面临同样的问题。通过这样做解决。 转到actionbarsherlock - >模块设置 - >依赖项。删除支持v4库。在左下角有一个加号按钮,从那里添加1库依赖项(Select support-v4)。 让Gradle重新同步并清理一次完成的项目。

4

的问题是不是Execution failed for task ':dexDebug'如果你看一下上述错误

以红色显示,你会看到这个

enter image description here

要永久解决这个问题,只是在你的build.gradle添加这些行文件

android { 
    dexOptions { 
     jumboMode = true 
    } 
} 

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

0

在我的情况,我做了Build > Clean Project,它的工作!

0

这里的许多答案是试错法来查找重复的依赖关系,但如果你向上滚动从Execution failed for task ':app:dexDebug'.线只是一点点,它会给你在重复

error with a hint提示。

在我的情况我有以下错误:

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

,所以我知道,为了修复这个bug我需要找到定义parse.AbstractQueryController

在我来说,我有两个重复的依赖导入的模块在两个不同的Parse库中加载。让我的项目只加载一个固定我的问题。

1

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

File -> Invalidate Caches/Restart

0

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

3

ANDROID Studio用户试试这个: -

您需要将以下添加到您的gradle这个文件的依赖性:

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

,然后添加以下行(multidex支持应用程序),以您的清单的application标签:

android:name="android.support.multidex.MultiDexApplication" 
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' 
} 
0

刚刚添加的build.gradle

编译“com.parse.bolts:螺栓,机器人: 1。+”

编译 'com.parse:语法分析的android:1.11.0'

和同步工程与摇篮文件enter image description here 但不要添加在库解析瓶:) OKK

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' 
-1

使用Build in Menu Bar清理项目适用于Android Studio中的许多错误场景,因此在这种情况下可以使用。

+0

你有什么信息可以解释这个问题吗? –

+1

因为在任何方式你不能排除build.gradle中的库,并且接受的解决方案也告诉我们删除并添加无法编译的jar文件。因此,它不是那些导致麻烦,他们在问题出现之前一直在工作,在我使用我提到的方法解决问题之后仍在工作,所以它的构建问题和代码没有被编译。那么,当构建失败时,最好的方法是清理项目并重建。谢谢! – code4salvation

+0

对于大多数人来说,如果他们要构建他们的项目,这条消息就会出现。所以这绝对不是一个解决方案 – maysi

0

如果您还使用DaggerButterknife你应该作为一个依赖添加番石榴您build.gradle主文件如类路径:

com.google.guava:guava:20.0

在另一方面,如果您有较大的堆问题在摇篮守护你可以增加添加到您的radle文件:

dexOptions { 
     javaMaxHeapSize "4g" 
    } 
相关问题