使用Arthas实现在线更新代码

前提

很多时候本地调试没啥问题,发到线上就出现问题,本地修改了代码要发布到线上比较费时。
那有没有什么方式直接更新上线代码? 有了Arthas,一切皆有可能。

安装Arthas就不在这里赘述了,官方链接写的很清楚也很简单官方地址

上代码

# 反编译代码  把 下面的xxxxx 换成你自己的类,  ">" 后面是你指定的路径
jad --source-only com.xxx.xxxx.Abc.java > /tmp/Abc.java

# 获取xxxx的ClassLoader的Hash值
sc -d com.xxx.xxxx.Abc.java | grep classLoaderHash


# 将上面得到的Hash值 换了“3d818f88” 这个
mc -c 3d818f88 /tmp/Abc.java -d /tmp

# 更新代码 xxx 对应你包的路径
redefine /tmp/xxx/xxx/xxx/Abc.class 

切记,redefine后不要用jad查看是否成功。

官方解释:redefine命令和jad/watch/trace/monitor/tt等命令会冲突。执行完redefine之后,如果再执行上面提到的命令,则会把redefine的字节码重置


后记

上面的代码我也记不住,主要用了Idea 的Arthas的插件,需要的自行下载吧

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值