美文网首页Android
删除掉第三方jar包中的部分.class文件,并重新打包成jar

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

作者: HawkFlying | 来源:发表于2023-01-12 18:10 被阅读0次

描述

有时第三方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

相关文章

网友评论

    本文标题:删除掉第三方jar包中的部分.class文件,并重新打包成jar

    本文链接:https://www.haomeiwen.com/subject/jzjwcdtx.html