快速替换jar包中.class、.html、.yml格式的文件
文章目录
- 快速替换jar包中.class、.html、.yml格式的文件
- 背景
- 下载反编译软件JD-GUI
- 使用 jd-gui 打开web.jar 文件
- 找到对应的jar包中需要修改的class 文件
- 将代码复制到新的java文件,并修改相应的内容
- 解压web.jar 文件
- 使用 javac 命令将 java 文件重新编译成 class 文件
- 直接用压缩包工具打开core.jar包,将生成的class文件替换
- 生成新的web.jar 文件
- 下载JD-GUI 工具
背景
为了快速修改部分小bug,避免花费很多时间在IDEA中在重新打包的流程上,提升工作效率。
下载反编译软件JD-GUI
使用 jd-gui-utf8.exe 可以避免中文乱码
使用 jd-gui 打开web.jar 文件
找到对应的jar包中需要修改的class 文件
例如:修改core模块下的AccountController.java 文件
根据以下截图找到相对应的位置
这时,我们可以了解到整个web.jar(单个应用)文件的结构,里面还包含的其他jar包,我们需要替换的是其他jar包中的class文件
将代码复制到新的java文件,并修改相应的内容
这时,我们已修改好需要修改的java文件,接下来,进行替换。
解压web.jar 文件
我们先将web.jar 放到桌面上。
# 切换到桌面的web文件夹下
cd desktop/web#执行 解压的命令
jar -xvf C:\Users\Administrator\web.jar
使用 javac 命令将 java 文件重新编译成 class 文件
例如:将core模块下的AccountController.java 编译成AccountController.class
使用javac 编译时,需要导入该类中的用到的所有依赖,我们将classpath 指引到所修改jar包在的路径下
-Djava.ext.dirs=C:\Users\Administrator\Desktop\web\BOOT-INF\lib\
因为java文件中存在中文,我们需要 设置 utf-8的编码
-encoding utf-8
最终,执行以下命令,就可以生成对应的class文件
javac -Djava.ext.dirs=C:\Users\Administrator\Desktop\web\BOOT-INF\lib\ -encoding utf-8 AccountController.java
注意:上述命令需在 AccountController.java所在的路径下执行,执行完后,会在同路径下生成对应的class文件 。
直接用压缩包工具打开core.jar包,将生成的class文件替换
这时,core.jar 中的AccountController.class 文件已替换。 其他文件,例如.html、.yml格式的文件,可直接替换,就正常生效。
接下来,是重新生成新的web.jar 包。
生成新的web.jar 文件
# 切换到桌面的web文件夹下
cd desktop/web# 执行 压缩命令 . 代表当前所有文件,而且速度特别快
jar -cfM0 web.jar .# 测试是否可以正常启动,运行java -jar web.jar
至此,我们就完成了快速替换jar包中.class、.html、.yml格式的文件
下载JD-GUI 工具
下载工具
address:https://pan.baidu.com/s/1Z1dM6Te0yAZHkl3E3Nx32A
passwd:fzjs