zoukankan      html  css  js  c++  java
  • transformClassesWithJarMergingForDebug

    Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
    > com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/google/gson/annotations/Expose.class

    当使用maven导入依赖时,可能会出现不同的依赖包含了同一个jar,在编译期间不会报错。可一旦run app的时候,就会报

    Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
    > com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: xxx.class
    • 1
    • 2

    解决的方法是在引入依赖的时候把相同的jar去除掉

    比方说,我同时引入了bmob和retrofit2的依赖

    compile ('cn.bmob.android:bmob-sdk:3.5.1')
    compile ('com.squareup.retrofit2:retrofit:2.1.0')
    compile ('com.squareup.retrofit2:converter-gson:2.1.0')
    • 1
    • 2
    • 3

    因为bmob底层也是通过引入okhttp来实现的,所以我报的错是:

    Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
    > com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/google/gson/annotations/Expose.class
    • 1
    • 2

    这时候我们可以发现

     com/google/gson/annotations/Expose.class
    • 1

    最后面有一个Expose.class
    我们可以通过Search Everywhere去定位这个类(默认快捷键是双击shift)。

    全局搜索相同类

    看,通过搜索的确发现了两个一模一样的类,而且来自不同的依赖,而重复的类库正是gson。此时再回想起我刚刚是不是添加过一个

    compile ('com.squareup.retrofit2:converter-gson:2.1.0')
    • 1

    好了,找到问题的根源的。那我们现在如何去除相同的类库呢,很简单:
    在AS中,选择以project显示项目,找到最下面的External Libraries,然后继续找,找到相对应的类库:

    gson

    如图依次点开之后发现了一个pom.xml,这里面就是关于这个jar的一些配置文件,点开之后长这个样子

    pom.xml

    往下找,发现了一个gson的引用

    gson引用

    没错,这个就是导致报错的直接原因。复制里面groupId,到你的app的build.gradle里,找到那个依赖,添加{exclude group: 'com.google.code.gson'}
    把这个groudId的引用去除掉。如下图所示

    去除重复依赖

    好了,到此问题就解决了,如果你有多个重复依赖的话,就按照本文所给出的方法,一个一个去重

  • 相关阅读:
    Linux NFS 和 Samba 共享配置
    ORA00600 internal error code, arguments [%s] [%s] [%s] [keltnfyldmInit] [46] [1] 错误的解决方法
    Linux 平台下 RMAN 全备 和 增量备份 shell 脚本
    dba_tables 和 dba_segments 表中 blocks 的区别
    RMAN 同机复制数据库
    如何 搭建 RMAN 备份平台
    RMAN 系列(五) RMAN 还原 与 恢复
    dba_tables 和 dba_segments 表中 blocks 的区别
    用RMAN复制 搭建 物理 Data Gurad 环境
    企业管理器(OEM)介绍: Grid Control 和 Database Control
  • 原文地址:https://www.cnblogs.com/dubo-/p/8734386.html
Copyright © 2011-2022 走看看