error :Java.exe finished with non-zero exit value 1(或2)

导入module后出现以下问题

 

百度良久。。。

说法一:项目包含了两个相同包名的不同 project 或者 jar

(1)libs目录下存放有jar包,但是build.gradle中也写了导包语句。
(2)新引入的Library项目中引用了主项目中已经引用的jar包,导致重复加载包。

举例:

1、当 A Module 中有 V4包,B Module 中也有 V4包,这时就会出现这样的错误

2、com.android.dex.DexException: Multiple dex files define Lcom/sina/weibo/sdk/BuildConfig

这是导入新浪微博库出现的错误,当出现标题错误时,如果是新浪微博捣的鬼的话,你只要在标题的错误日志之前几行就可以找到如上的错误日志,那是因为WeiboSDK里面含有一个library叫weibosdkcore.jar,这个weibosdkcore.jar的package name是com.sina.weibo.sdk. 而WeiboSDK这个project的package name也是com.sina.weibo.sdk造成的

解决方法1:

删除多余的 jar 

如 V4包,只要将其中一个 module 中的 V4包干掉,然后引用另一个 有 V4包的Module 就哦了

解决方法2:

打开Gradle项目中的,对应项目的脚本文件 ,改成如下的就行了

android {
    ...
    provided fileTree(include: ['*.jar'], dir: 'libs')
    ...
}

即将引用的库的条件改为provided,不要用compile.因为它们已经是库了,再编译就。。。

解决方法3:

(1)先检查Android 兼容包 support-v4 和 support-v7 包;
(2)再检查一些常用的开源项目,比如:Gson、Butter Knife、EventBus、Nineoldandroids等。
(3)建议:不要将jar包放到libs目录下,而要用Gradle构建,即在build.gradle中写导包语句。

 

 

说法二:同时在工程中引入了多个第三方jar包,导致调用的方法数超过了android设定的65536个(DEX 64K problem),进而导致dex无法生成,也就无法生成APK文件。

解决方法:(最终解决方案)

打开 app/build.gradle 文件
android {
    defaultConfig {
        // Enabling multidex support.
        // 1. 65535 limited
        // 2. run -- error :Java.exe finished with non-zero exit value 2
        multiDexEnabled true
  }
 
    dexOptions {
        javaMaxHeapSize "1g"  <- Java.exe finished with non-zero exit value 1 
                                 设置的值不要大于你机器可用的内存,
                                 如:Windwos10 4GB 此处设置为 1g
    }
}

 

posted @ 2016-02-17 14:29  请输入...昵称  阅读(2201)  评论(0编辑  收藏  举报