001-Eclipse、idea集成javap查看字节码、javap说明
一、概述
分析java语言特性的一个好帮手是使用javap工具查看java编译后的字节码,如何在eclipse中配置javap工具快速查看java字节码。
二、Eclipse集成javap查看字节码
代码工程用的maven结构。默认java编译后的class文件是放在: 工程目录/target/classes 下的
首先进入run -> External Tool -> External Tools Configurations 然后在Program 节点选定后右键点击“New” 创建一个新的扩展工具配置。
然后按照如下图所示配置即可:
Location:指定javap的绝对路径。
Working Directory: ${project_loc}变量返回工程所在的绝对路径。
Arguments: 注意这里的参数配置,-classpath 指定的是java代码编译后class文件存放的目录,这里我们配置的是相对于工程根目录而言,class文件的相对目录路径,-c参数后面的值是指定要查看哪个文件的字节码,${java_type_name} 变量返回你选取的类文件名。使用javap工具之前一定得获取class文件,因此先让你的代码能正常run一遍把。
如果你的工程不是maven的目录结构,那么只用按照本文配置修改classpath参数的值指定你的class文件存放的相对路径即可。使用javap工具的时候切记需要激活你当前java的代码编辑窗口才能使用。
参数verbose
示例
普通bin项目:-verbose -classpath bin -c ${java_type_name}
maven项目:-verbose -classpath target/test-classes -c ${java_type_name}
三、idea配置查看字节码
1、打开File→Settings→Tools→External Tools;
2、右侧添加,配置如下:
name:任意
Program:javap路径【D:\ProgramFiles\Java\jdk1.8.0_121\bin\javap.exe】
Parameters:-v $FileClass$【同上介绍一致】
Working direstory:$OutputPath$
使用:代码上右键→External Tools选择即可
四、javap参数说明
查看详细信息:
javap -help
详细信息
用法: javap <options> <classes> 其中, 可能的选项包括: -help --help -? 输出此用法消息 -version 版本信息 -v -verbose 输出附加信息 -l 输出行号和本地变量表 -public 仅显示公共类和成员 -protected 显示受保护的/公共类和成员 -package 显示程序包/受保护的/公共类 和成员 (默认) -p -private 显示所有类和成员 -c 对代码进行反汇编 -s 输出内部类型签名 -sysinfo 显示正在处理的类的 系统信息 (路径, 大小, 日期, MD5 散列) -constants 显示最终常量 -classpath <path> 指定查找用户类文件的位置 -cp <path> 指定查找用户类文件的位置 -bootclasspath <path> 覆盖引导类文件的位置
一般常用的是-v -l -c三个选项。
javap -v classxx,不仅会输出行号、本地变量表信息、反编译汇编代码,还会输出当前类用到的常量池等信息。
javap -l 会输出行号和本地变量表信息。
javap -c 会对当前class字节码进行反编译生成汇编代码。