java - 如何使用 javap 反汇编所有代码?
问题描述
我想用 来查看 Class 文件的字节码javap -c
,但它似乎并没有消除我所有的代码。这里是FooBar.java
:
class FooBar {
public static void main(String[] args) {
if (args[0].equals("foo")) {
System.out.println("bar");
} else {
notFoo();
}
}
private static void notFoo() {
System.out.println("not Foo");
}
}
编译javac FooBar.java
。然后我尝试使用javap -c FooBar.class
哪些输出来反汇编它:
class FooBar {
FooBar();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: aload_0
1: iconst_0
2: aaload
3: ldc #2 // String foo
5: invokevirtual #3 // Method java/lang/String.equals:(Ljava/lang/Object;)Z
8: ifeq 22
11: getstatic #4 // Field java/lang/System.out:Ljava/io/PrintStream;
14: ldc #5 // String bar
16: invokevirtual #6 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
19: goto 25
22: invokestatic #7 // Method notFoo:()V
25: return
}
如您所见,这似乎只是对方法进行了反汇编main
,并没有向我显示反汇编的notFoo()
方法。
我怎样才能拆卸所有东西?
解决方案
javap
默认情况下只显示公共方法。
传递-p
参数以查看所有内容。
推荐阅读
- python - 如何解码这个表示为 unicode 的字符串?
- angular - Angular 6 路由器中的错误
- django - 无法更新一对一的 Django 模型
- android - Android/Kotlin/GraphView - 自动增加 x 坐标的值,并且不显示 X 轴上的标签
- python - OpenCV Crop Hough Circles Python不工作
- marklogic - ML 9.0.5 的 MarkLogic-typescript-definition 库更新
- authentication - 使用 apache nutch 抓取基于身份验证的页面
- sql - 探索文件表目录已禁用
- firebase - Firebase 功能和通知无法正常工作
- python - 展平后索引在 Numpy 中返回错误