博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java查看字节码文件(基于JDK和IDEA)
阅读量:4220 次
发布时间:2019-05-26

本文共 825 字,大约阅读时间需要 2 分钟。

Java虚拟机执行的是Java字节码文件(也就是.class文件),比如写一个Demo.java类:

public class Demo {        private static int num = 1;    public static void main(String[] args) {        System.out.println("say hello " + num);    }}
会对应生成一个对应的Java字节码文件Demo.class

1、查看原生的16进制代码:
需要下载WinHex
运行WinHex,并且将Demo.class文件拖入其中,得到:

分析:
CAFEBABE这4个字节表示的是魔术=咖啡。接下来的4个字节表示版本号,这里是00 00 00 34,其中,34为16进制对应的10进制的值为52,我们查看
jdk版本号对应关系如下:

34对应的jdk1.8。其它相关信息可以查看这篇博文:
2、需要解析16进制代码
利用javap命令
找到jdk的安装路径,我这里为:C:\Program\Java\jdk1.8.0_151\bin
然后配置到相应的环境变量:

执行cmd,目录切换到我们代码编译后的.class文件,执行如下命令javap -c Demo

IDEA中配置解析字节码:
由于我们通常使用IDE来开发java代码,因此,一种更加简便的方式是在IDEA中配置,解析Java字节码,具体操作如下:
(1)点击File->Setting...

(2)Tools->ExternTools中点击那个绿色的加号

(3)添加Name、Program、Parameters以及Working directory,其中Program是你实际的jdk的路径下的javap.exe的路径。

(4)相应的*.java文件,右键能够看到如下标识:

(5)点击上述Show Byte Code,即可看到编译后的代码:
你可能感兴趣的文章
使用 logrotate对centos中各服务程序的日志文件进行转储
查看>>
Qt程序打包发布方法(使用官方提供的windeployqt工具)
查看>>
Select中DISTINCT关键字的用法?
查看>>
一次segfault错误的排查过程
查看>>
利用dmesg和addr2line来重现bug
查看>>
addr2line命令使用
查看>>
用gdb 查看,执行汇编代码
查看>>
一步一步学调试——gdb命令小结
查看>>
linux程序莫名异常怎么查
查看>>
Linux进程退出详解(do_exit)--Linux进程的管理与调度(十四))
查看>>
python ctypes 探究 ---- python 与 c 的交互
查看>>
Python如何运行程序
查看>>
Qt容器遍历
查看>>
使用 ctypes 进行 Python 和 C 的混合编程
查看>>
用scikit-learn学习DBSCAN聚类
查看>>
机器学习:Python实现聚类算法(三)之总结
查看>>
使用sklearn做单机特征工程
查看>>
Python 多线程技巧 用threading.Event代替time.sleep()
查看>>
工具】Cmake与gcc的关系
查看>>
struct中长度为0的数组用途与原理
查看>>