如何修改第三方SDK jar包中的class文件

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第13天,点击查看活动详情

前言

今天同事问的一个问题,发现引用的第三方SDK有点问题,需要修改jar包,怎么办?

这个其实对于老java程序员来说可能不是一个问题, 在java最开始出来的时候,我们怎么运行程序的,web 应用打包成war包上传到tomcat目录,源码编译class文件jar包,上传最终的war包到生产环境,有时候发现生产bug,也是修改某个类编译成class文件,然后替换jar包中的class文件。但是在现在工具和集成平台越来越完善,可能就忽略了很多的细节的问题。

下面这张图很好的解释了java源码到运行的过程:

image.png

如何替换jar包中的class文件?

1、 新建空白项目

IDEA NEW Prject -》 选择Maven工程 -》新建项目, 比如我这边新建了一个open-sdk的本地工程.

2、解压java sources源码文件拷贝到新建的项目中

image.png

如果你有java sources 源码的jar包文件,很简单,直接用压缩工具解压,解压后的com源码目录直接拷贝到我新建的工程下面。替换pom文件,刷新maven工程。

image.png

比如我们的需求是要将这个网址替换成https的

image.png

3、 编译成.class文件

我们在源码里面找到对应定义的地方修改,然后编译成.class文件

image.png

4、最后替换原始jar包的文件。

image.png

注意: 如何我没有源码文件怎么办呢?

没有源码文件也没有关系,我们有java反编译的工具或者直接吧jar包添加到maven依赖里面,然后按照源码相同的目录和package,创建一个完全相同的类,然后编译成class文件然后替换。

FILE -> Project Structure ->添加java lib 包依赖

image.png

image.png

比如我这边要修改的class文件,按照相同的package目录命名,然后编译,替换,步骤其实和上面的一样了。

image.png

总结

同样的如何你发现开源代码中有bug,你要等到你提inssue然后等开源的开发提供到中央仓库修复,肯定也是来不及的, 这种情况你也需要修改jar包中的class文件,然后添加本地的sdk依赖,保证版本的正常运行。

猜你喜欢

转载自juejin.im/post/7109099200561807367