手动实现第三方jar包修改并重新打包

您所在的位置:网站首页 jar读什么 手动实现第三方jar包修改并重新打包

手动实现第三方jar包修改并重新打包

#手动实现第三方jar包修改并重新打包| 来源: 网络整理| 查看: 265

本文已参与好文召集令活动,点击查看 : 后端、大前端双赛道投稿,2万元奖池等你挑战!

前言

开发过程中,项目中总会引入一些第三方依赖包,以便通过直接调用jar包中的方法来完成某些实际业务。但是有时候jar包中封装的方法可能跟我们的实际需求有些出入,需要修改业务逻辑后重新打包才能使用,但是jar包可能不像普通的maven项目那样导入idea等工具修改然后直接利用maven命令来完成,很多时候需要安装一些反编译工具才能打开,且不能在反编译工具中直接修改。本文主要针对jar包中的文件类型,从两种方式实现jar包中文件的替换及生成class字节码文件。

背景

最近业务需要,项目中需要实现文件预览功能,由于使用的是kkFileView第三方jar包,有些业务需要自己调整,然后使用新生成的jar包进行部署。结合自己的实际项目情况,根据jar包要修改的文件类型,本文主要介绍两种文件类型实现方式:一种是替换jar包中的非java类型文件,即不需要生成class字节码的文件,比如ftl后缀的文件,另一种是需要生成class字节码的文件,比如entity、service、controller等类型文件。话不多说,请参考操作流程。

操作流程

1.不需要生成字节码文件的jar包修改方式

如图:第一步:找到要修改的jar包,右键选择打开方式,然后选择反编译插件jd-gui(该应用程序需自己安装),打开后,找到对应的ftl文件,双击打开,然后ctrl+c复制文件中的内容,粘贴到notepad软件中,修改对应的内容后另存到自己指定的目录下(注意:名称要与原文件名保持一致)

图1

第二步:找到刚才的jar包,右键选择打开方式,然后选择7.zip或者WinRAR压缩工具打开,然后找到被修改文件的位置,将第一步中的文件拖拽进去替换掉即可

图2

图3

第三步:运行jar包,程序调用jar中的方法,查看运行效果

修改前:

图4

修改后:

图5 此时预览报错页面下方的对应的jar中的官方QQ群信息已删除,目的达到。

2.需要生成字节码文件的jar包修改方式

如图:我现在要修改实体类对应的文件,添加一个新属性,该怎么做呢?

图6

第一步:同上,找到要修改的jar包,右键选择打开方式,然后选择反编译插件jd-gui(该应用程序需自己安装),打开后,找到对应的文件,双击打开,然后ctrl+c复制文件中的内容,粘贴到notepad软件中,修改对应的内容后另存jar包所在的同级目录下(注意:名称要与原文件名保持一致,尽量在同级目录下,便于后续使用javac命令生成calss文件),此处仅测试使用,添加一个新属性即可,如图

图7

图8

第二步:由于springboot项目中有些文件有依赖关系,使用javac命令生成字节码文件时可能会包程序包找不到(比如cn.keking.config包不存在),所以此处在项目中随便找一个jar包(如filters-2.0.235.jar),和要修改的jar包(如kkFileView-3.6.0.jar)放在同一个目录下,然后使用7.zip压缩工具分别打开两个jar包文件,删除第一个jar包中的所有文件,然后使用复制或拖拽的方式将第二个jar包中的将要修改的目录(比如cn目录)下的文件复制到另一个jar包中,如图

图9

图10

第三步:然后在jar包所在目录的上方,输入cmd命令,回车,进入命令行模式,如图

图11

图12

图13

第四步: 弹框中执行如下命令:代码如下

javac -cp C:\Users\rongke\Desktop\test\filters-2.0.235.jar C:\Users\rongke\Desktop\test\FileAttribute.java

如图

图14

回车,即可看到生成了class字节码文件,并且内容发生了改变,如图

微信图片_20210707223208.png

微信图片_20210707223134.png

此时想必大家应该知道接下来的操作流程了吧,使用7.zip方式打开kkFileView-3.6.0.jar,找到字节码文件所在的指定位置,然后将新的class文件拖拽替换掉原来的class字节码文件即可。

好了,今天的分享就到这里,如果对你有所帮助的话,记得给小编点赞哦!如果您有更好的实现方式,也可以下方评论留言,一起探讨!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3