使用arthas修复线上代码

# 反编译
$ jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java
不指定输出/tmp路径,默认是当前路径(通过pwd命令查看路径)

# 修改文件
$ vim /tmp/UserController.java

# 查找加载的 ClassLoader
$ $ sc -d *UserController | grep classLoaderHash
 classLoaderHash   6bc28484

# 编译
$ mc -c 6bc28484 /tmp/UserController.java -d /tmp
-c 是指定classLoaderHash, -d 是指定class文件保存路径,不写就是当下路径
会输出如下内容编译后的文件路径
Memory compiler output:
/abc/xxx/com/example/demo/controller/UserController.class

# 热更新
$ redefine /tmp/com/example/demo/arthas/user/UserController.class

参考
https://blog.csdn.net/javageektech/article/details/101443191

你可能感兴趣的:(开发)