# 反编译
$ 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