使用HotSwapper热插拔
// 监听 8000 端口,在启动参数里设置
// java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000
HotSwapper hs = new HotSwapper(8000);
ClassPool pool = ClassPool.getDefault();
CtClass ctClass = pool.get(Test.class.getName());
// 获取方法
CtMethod ctMethod = ctClass.getDeclaredMethod("方法名");
// 重写方法
ctMethod.setBody("{ return $1 + \"修改后返回:\" + (0L) + \" 个\"; }");
// 加载新的类
System.out.println(":: 执行HotSwapper热插拔");
hs.reload(ApiTest.class.getName(), ctClass.toBytecode());
网友回复