[alibaba/arthas]Jad --source-only xxxxxx > /tmp/a.java 是否支持源码是 Scala?

2024-07-09 900 views
8
环境信息

使用此版本安装:https://arthas.aliyun.com/doc/install-detail.html#id4

  • arthas-boot.jar 或者 as.sh 的版本: 3.5.4
  • Arthas 版本: 3.5.4
  • 操作系统版本: centos7
  • 目标进程的JVM版本: java8
  • 执行arthas-boot的版本: 3.5.4
重现问题的步骤
  1. 使用 scala 代码生成的 Jar 来运行常驻服务
  2. 使用 jad 来反编译某个 package, 再修改反编译出来的 Java 文件
  3. 再使用 retransform 重新加载,发现报错
    [arthas@6425]$ mc /tmp/HadoopRDD.java -d /tmp
    Memory compiler error, exception message: Compilation Error
    line: 120 , message: illegal start of expression , 
    line: 317 , message: illegal start of expression , 
    line: 338 , message: illegal start of expression , 
    line: 382 , message: illegal start of expression , 
    line: 661 , message: illegal start of expression , 
    , please check $HOME/logs/arthas/arthas.log for more details.
期望的结果

What do you expected from the above steps? 支持

实际运行的结果

实际运行结果,最好有详细的日志,异常栈。尽量贴文本。

上面已贴

回答

5

不支持。看mc wiki,可以本地编译好,上传 .class

9

感谢。顺便问下,arthas 支持查看某个 watch 的方法中的变量么 @hengyunabc

1

不支持,可以修改代码,增加print后,用retransform来更新。

5

OK. 那只能编译重新编译下 Spark, 再用 retransform 热更新下 class 了 @hengyunabc 感谢~