JVM

三种方式查看Java类字节码

2017-08-30  本文已影响140人  CysionLiu

本文提供了三种较为方便的查看字节码的方式。

完全命令行方式

假设本地D盘里有个Hello.java文件:

public class Hello
{
    public void say(){
        Hello he = new Hello();
        System.out.println("hello world");
    }
}

首先使用命令javac D:\Hello.java,将java文件编译成Hello.class文件,此时直接打不开,可使用jd-gui.exe程序打开,或者用ide工具(比如as)打开,不过显示的Hello.class文件是被反编译过的,基本与原java文件一样。并不是我们想要看的格式。这时,使用javap -c D:\Hello.class便可以在dos窗口里看到我们需要的字节码文件:

public class Hello {
  public Hello();
    Code:
       0: aload_0
       1: invokespecial #1  
       4: return

  public void say();
    Code:
       0: new           #2      // class Hello
       3: dup
       4: invokespecial #3      // Method "<init>":()V
       7: astore_1
       8: getstatic     #4       
      11: ldc           #5      // String hello world
      13: invokevirtual #6      
      16: return
}

外接工具的方式

假设本地D盘里有个Hello.java文件,类似上面的描述编译成Hello.class文件(或者找到ide中相关out文件夹中的那些.class文件),然后下载Java Bytecode Editor,解压,直接运行jbe.sh即可看到UI面板,打开Hello.class文件即可看到类似下图的目录,将能看到非常丰富的类信息。

这里写图片描述

内部插件工具的方式

上述两种方式会跳出ide,有时会显得比较费时。我们需要一款合适的插件,感谢jclasslib bytecode viewer,我们打开ide(这里是android studio),setting-plugin-browse..-bytecode viewer-jclasslib bytecode viewer-install-restart,此时呢,打开一个java文件,对java文件,然后面板上View-Show bytecode with jclasslib,此时在ide的右边就会看到类似下图的界面,非常丰富的类信息。

这里写图片描述

以上。

上一篇 下一篇

猜你喜欢

热点阅读