
使用场景
在平常的开发中,经常会遇到一些代码bug,并且有了bug修改后需要重新打包部署至服务器以修复bug,而在一些上线部属流程比较严格的公司,这个 打包->构建->代码检测->安全检测->提交流程->审批->部署 整个流程可能就需要耗时一天,所以一般情况下,我们是通过直接替换class然后重启的方式来进行变更的。
使用方法
在这里准备一个简单的小例子来说明如何使用 这个命令
新建两个测试类
- Main.java 这个类是主类,用于调用需要被替换的类的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| package com.lovedata.bigdata.jar;
public class Main {
public static void main(String[] args) { NeedReplace.print(); }
}
|
- NeedReplace 这个类是需要被替换的类,这里是修改之前。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| package com.lovedata.bigdata.jar;
public class NeedReplace {
public static void print() { System.out.println("before replace"); }
}
|
打包为test.jar并且执行 java -jar test.jar 命令执行,执行结果如下

现在需要修改 NeedReplace 类 ,将 “before replace” 修改为 “ after replace”

在test.jar 的同目录下新建一个与NeedReplace 类的全路径相同的目录,执行以下命令
1
| md com\lovedata\bigdata\jar
|
执行 java -jar 来进行替换
1
| jar uvf test.jar com\lovedata\bigdata\jar\NeedReplace.class
|
再次执行 java -jar 命令查看效果,结果如下
