springboot jar包反编译打包
1.使用压缩软件解压 jar 包后,目录结构如下

2.用反编译软件打开 jar 包,这里用了 jdgui,将需要修改的 class 文件和其依赖的项目中定义的 class 文件保存为 java 文件
这边的例子里保存 DemoApplication.java,Pet.java,User.java,Myconfig.java

3.将 DemoApplication 依赖的 Pet.java,User.java,Myconfig.java 按项目路径放置在指定文件夹下,便于后续编译时寻位


4.修改 DemoApplication.java,这里多加了一条路由
before

after

5.将 DemoApplication.java 放在 com 文件夹同目录下,在该目录下执行如下命令,其中-Djava.ext.dirs 指定了初始 jar 包解压后的三方依赖库位置
1 | javac -encoding utf-8 DemoApplication.java -Djava.ext.dirs=G:\temp\springdemo\jar_repackage_test\BOOT-INF\lib\ |

6.目录下生成了 DemoApplication.class,使用压缩软件打开 jar 包,使用新生成的 class 替换原来的 class 文件

7.重新运行 jar 包,修改生效
