Cause: duplicate entry: module-info.class Android 构建问题及处理

报错关键词

Cause: duplicate entry: module-info.class
或
java.util.zip.ZipException: duplicate entry

情况说明

由于工作需要,需要进行jwt相关签名加密,从java项目中摘取了几个lib,创建了“签名 module”,以module形式引入,代码可以正常运行。
但是项目build 成了 aar,之后引入app就报错如下。

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'.
> Could not resolve all files for configuration ':app:debugCompileClassp
ath'.
  > Failed to transform shanghai_sdk_1.1_debug.aar to match attributes
{artifactType=android-classes-jar, org.gradle.usage=java-api}.
     > Execution failed for AarToClassTransform: C:\Users\Administrator\.
gradle\caches\transforms-2\files-2.1\360aab2cc5c51e0c1481c5e6da41
c114\jetified-shanghai_sdk_1.1_debug.aar.
        > duplicate entry: META-INF/versions/9/module-info.class

* Try:

解决经过

  1. 刷新 clean 、invalidate 无效
  2. 各种翻墙,搜出来效果,包括修改gradle:修改aar引用方式, 声明java版本,跳过报错task等的修改等 ,逻辑正常方法,均做了测试,无效。
  3. 搜索过程中有人提到了,代码错误,最开始认为module形式引入正常,就没在意,但是最终排除掉其他可能性 ,只能抱着试试看想法来:
    由于引入java 的jar是从maven本地库里面直接考出来的,中间也确实处理了一些“水土不服”的问题。于是开始试验,建了一个空项目,只引入几个jar包,再构建成aar,导入果然报错,至此问题定位明确。
  4. 缩小了定位范围后,搜索问题就清晰了,定位到这个文件是java1.9的新特性,我不能因为一个jar包而更换java环境,而且查到删除对应文件不影响使用,就备份了原始文件开始测试。

最终解决方式

https://blog.csdn.net/haohaounique/article/details/94780353
由于我的问题是 本地环境是java1.8,而引入的jar包包含1.9的特性,所以使用 压缩工具,打开jar包,并且删除jar包中的, module-info.class清单文件,然后再编译,正常通过。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值