我如何用javap反汇编所有代码?



我想用javap -c查看class文件的字节码,但它似乎不能反汇编我的所有代码。这里是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参数查看所有内容

相关内容

  • 没有找到相关文章

最新更新