使用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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章