jad

将jvm中实际运行的类字节码反编译成java代码,便于业务理解

命令选项 描述
-c, --code <hash> 指定ClassLoader的哈希值
--classLoaderClass <class-name> 指定ClassLoader的类名
--hideUnicode 隐藏unicode,默认false
--lineNumber <boolean> 显示行号,默认true
-E, --regex 开启正则表达式匹配,默认是通配符匹配
--source-only 只输出源码
-h, --help 帮助
<class-pattern> 类模式字符串
<method-name> 方法名

实例

# 简单反编译 包含ClassLoader、Location、源码信息
[arthas@14064]$ jad -c 435181e6 com.alibaba.arthas.deps.ZZZ

ClassLoader:
+-com.taobao.arthas.agent.ArthasClassloader@435181e6
  +-jdk.internal.loader.ClassLoaders$PlatformClassLoader@782458af

Location:
/C:/Users/A/.arthas/lib/3.6.7/arthas/arthas-core.jar

/*
 * Decompiled with CFR.
 */
package com.alibaba.arthas.deps;

public class ZZZ {
}

Affect(row-cnt:1) cost in 19 ms.

# 指定方法源码
[arthas@14064]$ jad --source-only java.lang.String length
@Override
         public int length() {
/*1479*/     return this.value.length >> this.coder();
         }