# 反編譯
$ 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