Java完成非零退出值2 – Android Gradle

我得到这个错误执行我的Android应用程序(我清理它,然后建立它,但错误仍然存​​在)

  • 同步:好的
  • 制作项目:好的
  • 清洁:好的
  • 运行:错误

Error:Execution failed for task':app:dexDebug'.com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:Process'command'C:\ Program Files \ Java \ jdk1.7.0 _25 \ bin \ java.exe''以非零的退出值2结束

我的gradle文件:

apply plugin: 'com.android.application' android { compileSdkVersion 21 buildToolsVersion "21.1.2" defaultConfig { applicationId "com.rzr.rzevallosr.miappdepruebas" minSdkVersion 19 targetSdkVersion 21 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } productFlavors { } repositories { mavenCentral() flatDir { dirs 'libs' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) // This library handles authentication and authorization compile 'com.spotify.sdk:spotify-auth:1.0.0-beta9@aar' // This library handles music playback compile 'com.spotify.sdk:spotify-player:1.0.0-beta9@aar' compile 'com.android.support:appcompat-v7:21.0.3' compile 'com.android.support:recyclerview-v7:21.0.+' compile 'com.squareup.retrofit:retrofit:1.9.0' compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0' compile 'com.squareup.okhttp:okhttp:2.2.0' compile files('libs/spotify-web-api-android-master-0.1.0.jar') compile files('libs/okio-1.3.0.jar') } 

编辑:我没有看到“编译文件树(目录:'库',包括:['* .jar'])”它编译了两次我的库,所以我只是评论:

 //compile 'com.squareup.retrofit:retrofit:1.9.0' //compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0' //compile 'com.squareup.okhttp:okhttp:2.2.0' //compile files('libs/spotify-web-api-android-master-0.1.0.jar') //compile files('libs/okio-1.3.0.jar') 

它工作正常。

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

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

 defaultConfig { // Enabling multidex support. multiDexEnabled true } 

你可以在这里阅读更多有关multidex支持和开发超过65K方法的应用程序 。

对我来说问题是,我把一个不必要的complie库代码放在build.gradle中

 dependencies { compile 'com.google.android.gms:play-services:7.5.0' } 

这导致超过65k的方法,所以删除它,gradle同步,清理项目,然后再次运行,然后这个错误停止。 我只需要地图和gcm,所以我把这些线和同步项目

 compile 'com.google.android.gms:play-services-gcm:7.5.0' compile 'com.google.android.gms:play-services-location:7.5.0' 

嗨,人们,我再次遇到这个问题,这一次是因为更改构建工具版本,它真的需要我启用multidex..so我添加这些我的应用程序的build.gradle文件..

 defaultConfig { applicationId "com.am.android" minSdkVersion 13 targetSdkVersion 23 // Enabling multidex support. multiDexEnabled true } dexOptions { incremental true javaMaxHeapSize "2048M" jumboMode = true } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:multidex:1.0.1' } 

并创建一个扩展Application类的类,并在类中包含此方法..

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

也包括在OnCreate方法中

 @Override public void onCreate() { MultiDex.install(this); super.onCreate(); } 

以防万一,如果有人还在为此而苦苦挣扎,不知道为什么会发生这种情况,以及如何解决。 其实这个错误

错误:任务':app:dexDebug'的执行失败。 > com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:进程'command'C:\ Program Files \ Java \ jdkx.x.x_xx \ bin \ java.exe''完成非零退出值2

可能有很多原因会发生,但肯定不是与您的JDK版本有关,所以不要浪费您的时间在错误的方向。 这是发生这种情况的两个主要原因

  1. 你有相同的库或jar文件包括几个地方,其中一些相互冲突。
  2. 您即将或已经超过了65k的方法限制

第一种情况可以修复如下:找出你包含多次的依赖关系。 为了做到这一点在android studio终端运行下面​​的命令

 gradlew -q dependencies yourProjectName_usually_app:dependencies --configuration compile 

这将返回所有的依赖关系,但你从lib文件夹中包含的jar文件尝试摆脱标有星号(*)的重复,这并不总是可能的,但在某些情况下,你仍然可以做到这一点,之后尝试排除模块包括很多次,你可以这样做

 compile ('com.facebook.android:facebook-android-sdk:4.0.1'){ exclude module: 'support-v4' } 

对于超出方法限制的第二种情况,建议尝试通过删除包含的库(注意听起来像第一个解决方案)来尽量减少它(如果没有办法做到这一点)将multiDexEnabled true添加到您的defaultConfig

 defaultConfig { ... ... multiDexEnabled true } 

这增加了方法的限制,但它并不是最好的事情,因为可能的性能问题重要添加multiDexEnabled truedefaultConfig是不够的,实际上在所有设备上运行android <5的棒棒糖将导致意外的行为和NoClassDefFoundError 。 这里介绍如何解决这个问题

编译fileTree(dir:'libs',include:['* .jar'])“编译libs文件夹中的所有jar扩展名,所以我只是评论(或删除)这个线路:

 //compile 'com.squareup.retrofit:retrofit:1.9.0' //compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0' //compile 'com.squareup.okhttp:okhttp:2.2.0' //compile files('libs/spotify-web-api-android-master-0.1.0.jar') //compile files('libs/okio-1.3.0.jar') 

它工作正常。 不管怎么说,还是要谢谢你! 我的错。

我有同样的问题,我修复了删除不必要的库

 compile fileTree(dir: 'libs', include: ['*.jar']) 

我删除了该库,我可以运行该项目没有任何问题。

通过为调试版本启用multiDex解决了我的问题。

 defaultConfig { multiDexEnabled true } 

我拒绝嵌入式JDK(32位),因为嵌入式JDK是64位

右键单击您的项目 – > 打开模块设置 – > SDK位置 – >取消选中使用嵌入式JDK,然后设置您的JDK路径,例如在Ubuntu / usr / lib / jvm / java-8-openjdk-i386

可能的问题:你已经超过了dex 65k方法的限制,可能是你在问题发生之前添加了一些库或几个方法?

如果您已经更新了您的SDK,并且您还使用了google-play-services,那么您需要关注依赖关系,因为存在以下某种冲突:

请按照以下步骤编译:com.google.android.gms:play-services:+'Replace by compile'c​​om.google.android.gms:play-services:6.5.87'

注意:这里'6.5.87'是谷歌播放服务版本。 我希望这会帮助..

我认为这是你的项目中.jar文件的冲突。

我已经从libs文件夹中删除了android-support-v4.jar,并且工作正常!

如果你的项目出错,请检查你的build.gradle文件

依赖{

}

在我的情况下,问题是我添加的新库(gradle dependency)依赖于其他一些依赖关系,其中两个基础依赖关系在我的构建脚本中与其他库/依赖关系的一些依赖关系冲突/冲突。 具体来说,我添加了Apache Commons Validator (用于电子邮件验证),并且它的两个依赖项(Apache Commons Logging和Apache Commons Collections )与Robolectric使用的依赖项相冲突(因为我的构建路径中存在不同版本的相同库)。 所以当我添加新的依赖关系( Validator )的时候,我排除了那些相互冲突的版本( modules ):

 compile ('commons-validator:commons-validator:1.4.1') { exclude module: 'commons-logging' exclude module: 'commons-collections' } 

你可以使用下面的gradle命令(你可能只有一个模块在你的项目中)看到你的gradle模块的依赖关系(如果你在Android Studio / Intellij中创建了你的项目,我使用为你创建的gradle包装器理念)。 在你的项目的根目录下运行这个命令:

./gradlew:YOUR-MODULE-NAME:依赖关系

添加这些exclude指令NOTICE.txt试运行后,我得到了一些duplicate file错误的NOTICE.txt由一些apache公共库,如日志记录和集合使用。 打包时,我不得不排除该文本文件。 在我的build.gradle,我补充说:

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

事实证明,新的库( Validator )可以使用稍旧版本的依赖项/模块(已经被另一个库(Robolectric)导入到我的构建路径中)。 这个特定的库就是这种情况,但其他库可能使用最新的底层依赖的API(在这种情况下,您必须尝试查看依赖冲突的模块/依赖关系的其他库是否能够使用更新的版本(通过在这些库的条目下排除旧版本的模块/依赖))。

有两种方法可以肯定地工作:

  1. 清理你的项目,然后建立。

如果上述方法不起作用,请尝试下一步。

  1. 将以下内容添加到应用程序级别的build.gradle文件中

     defaultConfig { multiDexEnabled true } 

更新我的Java SDK到最新的版本1.7.0_79和更新Project Structure下的SDK Location解决了我的问题。

我的问题是,除了有

com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:Process'command'/Library/Java/JavaVirtualMachines/jdk1.X.X_XX .jdk / Contents / Home / bin / java''以非零的退出值2结束

我也有这个痕迹:

未捕获的翻译错误:java.lang.IllegalArgumentException:已经添加:Lcom / mypackage / ClassX;

问题是我在两个不同的库中添加了同一个类。 从其中一个库中删除类/ jar文件,项目运行正常

对我来说,我加入了整个Playstore的依赖关系

编译“com.google.android.gms:play-services:8.4.0”

但我只需要谷歌地图,所以我做了更具体的错误已解决。

编译'com.google.android.gms:play-services-maps:8.4.0'

在我的情况下,当有2个或更多的库冲突(相同的库,但不同的版本)时,我得到了这个错误。 检查您的应用程序build.gradle在依赖关系块。

在我的情况下,问题是构建工具版本是23.0.0 RC3 ,我改为22.0.1和我的问题修复。

您可能正在使用低质量的有线/有缺陷的线缆将您的设备连接到PC,我更换了线缆,并为我工作。

这个错误是因为使用了更多数量的库。在我的情况'compile'c​​om.google.android.gms:play-services-9.4.0'导致了这个错误。为了避免这个错误使用必要的库。例如,如果你想在您的应用程序中使用地图。然后使用compile'c​​om.google.android.gms:play-services-maps:9.4.0'。同时添加google play服务依赖项仅指定所需的库。默认情况下它包含所有库。

在你的gradle.build文件中,使用这个

 "compile fileTree(dir: 'libs', include: ['*.jar'])" 

它工作正常。

如果你想看看到底是什么导致了错误,可以尝试通过gradle终端来构建你的项目,像这样./gradlew assembleDebug --stacktrace --debug 。 我在我的例子中看到以下错误com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

当我尝试将Google地图集成到我的项目时发生这种情况。 为了解决这个问题,我只是检查了包含的库

compile 'com.google.android.gms:play-services:9.8.0'

我只是改变它

compile 'com.google.android.gms:play-services-maps:9.8.0'

问题没有了

将我的项目转换成Kotlin后,我遇到了同样的错误。 我的问题是,在这个过程中,我的位置被改变成了一个无效的路径(我想知道为什么会发生这种情况……让我浪费时间)。 通过这样做来修复它:

 File > Project Structure > SDK Location 

取消选中Use embedded JDK选项,该选项指向一个旧的JDK安装,并选择正确的:

 /home/my_user/jdk1.8.0_101 

改变这个之后,错误消失了

为我工作:)

我升级到最新的版本8以前是7,然后去打开模块设置右键单击项目,更改为新的Java 8安装的/ usr / lib / jvm / java-8-oraclejdk路径 。 然后重新开始工作室

检查/ usr / lib / jvm中的java 8文件夹名称

我正在使用Ubuntu的 在这里输入图像描述