前提是已安装好Arthas,安装相当简单,执行下述语句即可:
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
然后输入对应的pid,即可进入交互界面。
主要涉及以下三个arthas提供的指令:jad ? mc ?redefine 。具体步骤如下:
1、通过jad指令将class反编译成java文件:
jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java
2、修改/tmp/UserController.java中的代码
通过linux命令:vi ? vim ? sed 均可
3、通过 sc 指令找到该类的加载器
sc -d *UserController | grep classLoaderHash
4、查找所有的类加载器列表
classloader -l
5、通过 mc 指令将java文件编译成class文件
mc --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader /tmp/UserController.java -d /tmp
6、通过 redefine 指令重新加载class
redefine /tmp/com/example/demo/arthas/user/UserController.class
完成
注意:redefine重新加载class之后,如果再次使用jad指令,则会将class还原成初始状态。