[alibaba/arthas]Docker 内jad 任何类如java.lang.String都报jad: fail to decompile class:xxx

2025-11-12 870 views
5
环境信息
  • arthas-boot.jar 或者 as.sh 的版本: 3.5.5 和3.6.0
  • Arthas 版本: xxx
  • 操作系统版本: xxx
  • 目标进程的JVM版本: 1.8
  • 执行arthas-boot的版本: 1.8
重现问题的步骤
  1. docker cp arthas-boot.jar :/xx/xx
  2. /opt/jdk/bin/java -jar arthas-boot.jar 8 3.[arthas@8]$ jad java.lang.String Affect(row-cnt:0) cost in 69 ms. jad: fail to decompile class: java.lang.String
期望的结果

What do you expected from the above steps? jad反编译成功

实际运行的结果

实际运行结果,最好有详细的日志,异常栈。尽量贴文本。 jad: fail to decompile class: java.lang.String

把异常信息贴到这里

回答

3

本质上 jad是要把 .class写到 ~/logs/arthas 下面,再反编译的。检查下进程有没有权限写。 检查下 ~/logs/arthas/arthas.log

8

启动命令日志和日志:

/opt/jdk/bin/java -jar arthas-boot.jar 8
[INFO] arthas-boot version: 3.6.0
[INFO] arthas home: /tmp/.arthas/lib/3.6.0/arthas 

cd /tmp/.arthas 目录下只有lib dir 查找到的日志:

cat /tmp/logs/arthas/arthas.log
Arthas server agent start...
Arthas server already bind.
Arthas server already stared, skip attach.
Arthas server already stared, skip attach.
Arthas server already stared, skip attach.
Arthas server already stared, skip attach.
Arthas server already stared, skip attach.
2

本质上 jad是要把 .class写到 ~/logs/arthas 下面,再反编译的。检查下进程有没有权限写。 检查下 ~/logs/arthas/arthas.log

docker 内找不到~/logs/目录,看起来没有权限。docker内的Java进程是以一个非root用户起的