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

描述

有時第三方j(luò)ar會和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都有,有沖突,經(jīng)排查發(fā)現(xiàn)javax.annotation:jsr250-api:1.0庫包含在hilt里,需要用exclude,但考慮到hilt注解主要核心是annotation,所以權(quán)衡下,刪除rt.jar里的annotation比較妥當(dāng)。

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

一、解壓jar包

unzip xxx.jar -d 解壓后目錄

如下,解壓后放在tmpDir目錄


解壓到tmpDir目錄.png

二、刪除jar包里沖突的.class文件

如下,刪除javax里的annotation


刪除部分class文件.png

三、重新打包jar包

jar cvf 打包后.jar .//

.//表示將當(dāng)前目錄下的所有目錄的.class文件打進(jìn)jar包
如下,重新打包my.jar


重新打包jar.png

打包后jar.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容