删除掉第三方jar包中的部分.class文件,并重新打包成jar包(定制jar包)

描述

有时第三方jar会和android引入的其它库有冲突,需要删除jar里的部分.class文件;
如我这边引入jdk1.8里的rt.jar编译时会有冲突,报错如下

ava.lang.RuntimeException: Duplicate class javax.annotation.Generated found in modules jetified-jsr250-api-1.0.jar (javax.annotation:jsr250-api:1.0) and jetified-rt.jar (rt.jar)
Duplicate class javax.annotation.PostConstruct found in modules jetified-jsr250-api-1.0.jar (javax.annotation:jsr250-api:1.0) and jetified-rt.jar (rt.jar)
Duplicate class javax.annotation.PreDestroy found in modules jetified-jsr250-api-1.0.jar (javax.annotation:jsr250-api:1.0) and jetified-rt.jar (rt.jar)

上面很明显就是javax.annotation类在javax.annotation:jsr250-api:1.0和rt.jar都有,有冲突,经排查发现javax.annotation:jsr250-api:1.0库包含在hilt里,需要用exclude,但考虑到hilt注解主要核心是annotation,所以权衡下,删除rt.jar里的annotation比较妥当。

删除掉jar包里部分.class文件并重新打包成jar包

一、解压jar包

unzip xxx.jar -d 解压后目录

如下,解压后放在tmpDir目录


解压到tmpDir目录.png

二、删除jar包里冲突的.class文件

如下,删除javax里的annotation


删除部分class文件.png

三、重新打包jar包

jar cvf 打包后.jar .//

.//表示将当前目录下的所有目录的.class文件打进jar包
如下,重新打包my.jar


重新打包jar.png

打包后jar.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容