快速替换jar包中.class、.html、.yml格式的文件

快速替换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、.html、.yml格式的文件_第1张图片

快速替换jar包中.class、.html、.yml格式的文件_第2张图片

找到对应的jar包中需要修改的class 文件

例如:修改core模块下的AccountController.java 文件

根据以下截图找到相对应的位置

快速替换jar包中.class、.html、.yml格式的文件_第3张图片

快速替换jar包中.class、.html、.yml格式的文件_第4张图片

这时,我们可以了解到整个web.jar(单个应用)文件的结构,里面还包含的其他jar包,我们需要替换的是其他jar包中的class文件

将代码复制到新的java文件,并修改相应的内容

快速替换jar包中.class、.html、.yml格式的文件_第5张图片

这时,我们已修改好需要修改的java文件,接下来,进行替换。

解压web.jar 文件

我们先将web.jar 放到桌面上。

# 切换到桌面的web文件夹下
cd desktop/web
 
#执行 解压的命令
jar -xvf C:\Users\Administrator\web.jar

快速替换jar包中.class、.html、.yml格式的文件_第6张图片

使用 javac 命令将 java 文件重新编译成 class 文件

例如:将core模块下的AccountController.java 编译成AccountController.class

快速替换jar包中.class、.html、.yml格式的文件_第7张图片

使用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文件替换

快速替换jar包中.class、.html、.yml格式的文件_第8张图片

这时,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

你可能感兴趣的:(工具,jar,html,java)