Hike News
Hike News

使用Arthas jad命令反编译源代码

Arthas jad命令介绍

https://alibaba.github.io/arthas/jad.html

将 JVM 中实际运行的 class 的 byte code 反编译成 java 代码

使用方法

命令格式:

1
jad class

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
[arthas@30]$ jad java.lang.String

ClassLoader:

Location:


/*
* Decompiled with CFR.
*/
package java.lang;

import java.io.ObjectStreamField;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Formatter;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import java.util.StringJoiner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public final class String
implements Serializable,
Comparable<String>,
CharSequence {
private final char[] value;
private int hash;
private static final long serialVersionUID = -6849794470754667710L;
private static final ObjectStreamField[] serialPersistentFields = new ObjectStreamField[0];
public static final Comparator<String> CASE_INSENSITIVE_ORDER = new CaseInsensitiveComparator();

public String(byte[] bytes, int offset, int length) {
String.checkBounds(bytes, offset, length);
this.value = StringCoding.decode(bytes, offset, length);
}

public String(byte[] bytes, Charset charset) {
this(bytes, 0, bytes.length, charset);
}
...