使用arthas,热更新class
安装arthas
查询进程pid
ps -ef | grep Project
启动arthas
java -jar arthas-boot.jar
选择对应的PID
反编译class文件
jad --source-only com.Test > /tmp/Test.java
com.Test 为class路径
/tmp/Test.java 为反编译后Java文件存储位置
编辑java文件
vim /tmp/Test.java
查询类加载器
sc -d com.Test | grep classLoaderHash
classLoaderHash 4628760a //4628760a 就是加载器ID
指定加载器编译Java
mc -c 4628760a /tmp/Test.java -d /tmp/
// mc -c 加载器ID java文件路径 -d 编译后的class文件存储位置
热更新class文件
redefine -c 4628760a /tmp/Test.class
// redefine -c 加载器ID class文件路径
热更新只会更新jvm内存,不影响原jar 和 war.