背景
引入第三方jar包时,想修改源码但字节码文件普遍为read-only,且没有原java项目,无法在项目中修改代码再重新打包
该博主和我的情况完全一致,按照他的步骤能解决80%的问题,但是jar包解压压缩会出现问题
https://blog.csdn.net/coycleipenghui/article/details/52998957
步骤
首先我们需要按照上述博主的步骤拿到修改后的.class文件
再根据以下步骤:
解压源码jar包 -> 替换.class文件 -> 打jar包
注意:不能使用任何压缩工具暴力解压压缩,会导致jar包损坏,此时idea报错:IDEA cannot determine what kind of files the chosen items contain,会出现选择框
Choose the appropriate categories from the list.
classes
external annotations
jar directory
JavaDocs
source archive directory
sources
原因:因为jar包损坏(压缩解压都不是无损方式),idea无法识别该资源
正确方式
1.解压jar包
jar -xvf xxx.jar
2.在新jar包目录中打开命令行窗口,打jar包(不生成清单文件,不压缩)
jar -cvfM0 xxx.jar com/ META-INF/ org/
(com/ META-INF/ org/都是jar包中的目录,替换成自己的)
或者
jar -cvfM0 xxx.jar *
自用,希望也能帮助到您