当前位置: 首页 > news >正文

使用arthas热替换在线运行的java class文件

如果我们在线的系统有问题,但又无法停机进行发版或者仅仅改了一个java文件需要验证一下功能是否正常,这时可以使用arthas的在线热替换功能来做class文件的在线变更。

1.运行java -jar arthas-boot.jar,启动arathas,并选择正在运行的java的进程;

2.执行 jad --source-only com.xxx.xxx.xxx > /tmp/xxx.java 反编译在线执行的要修改的类,将反编译内容复制到/tmp/xxx.java文件中。文件名与类名相同,后缀命名为.java,然后修改其中我们想要修改的内容。(注意:这里只能修改已存在方法的方法体里的内容,无法修改方法的参数,新增加方法等)
3.通过 sc -d com.xxx.xxx.xxx 能获取到class文件的classLoaderHash的哈希码,这里我获取的类的哈希码为:21b8d17c.
4.通过 mc -c  21b8d17c /tmp/ArthasController.java -d /tmp 该命令会将java文件编译成class文件放到tmp目录中。
最后执行 redefine -c 21b8d17c /tmp/com/xxx/xxx/xxxx.class 就可以将编译后的class文件热布署上去;注意这里重启应用后,热布署的方法功能将会还原。

http://www.xdnf.cn/news/748297.html

相关文章:

  • 描述性统计的可视化分析
  • Java弱引用与软引用的核心区别
  • ubuntu20.04.5-arm64版安装robotjs
  • 牛客周赛94
  • 使用Java实现简单的计算机案例
  • uv:一个现代化的 Python 依赖管理工具
  • AMBER软件介绍
  • JS和TS的区别
  • 姜老师MBTI课程:ISTP和ISFP
  • Vue事件处理
  • 【razor】采集模块设置了窗体句柄但并不能直接渲染
  • 《C 盘清理技巧分享》
  • 经济法-7-上市公司首次发行、配股增发条件
  • 【数据治理】要点整理-信息技术数据质量评价指标-GB/T36344-2018
  • 【数据集】30 m空间/1 h时间分辨率地表温度LST数据集
  • 投稿Cover Letter怎么写
  • C语言 — 自定义类型(结构体,联合体,枚举)
  • stm32默认复位刚开始由hsi作为主时钟源而后来才换成的pll
  • 【HTML-15.2】HTML表单按钮全面指南:从基础到高级实践
  • 第十四章 MQTT订阅
  • Wireshark 使用教程:让抓包不再神秘
  • 2025最新版在Windows上安装Redis(仅限开发环境)
  • 【Netty系列】Protobuf编码解码:客户端、服务端
  • 【判断数字递增】2021-12-19
  • C++:指针(Pointers)
  • 11.3JVM调优
  • 零基础SEO优化操作全解析
  • 2006-2024年 上市公司-企业战略联盟数据-社科经管实证数据
  • 打开NRODIC SDK编译不过怎么处理,keil与segger studio
  • CppCon 2014 学习:Modern Template Metaprogramming A Compendium