java -p_javap命令详解 - JackieYeah的个人空间 - OSCHINA - 中文开源技术交流社区
一、用法
javap [ 选项 ] classes
二、描述
javap命令反汇编一个或多个类文件。它的输出由使用的选项决定。如果没有使用选项,javap命令将打印输出传递给它的类的包, protected和public属性和方法。javap打印输出到标准输出。
选项
命令行选项。
classes
一个或多个(由空格隔开)的待处理的类列表。你可以指定一个可以在类路径上找到的类,通过文件名(例如,C:\myproject\src\DocFooter.class),或者使用一个URL (例如,file:///C:/myproject/src/DocFooter.class)。
例如,编译下面声明的类:
import java.awt.*;
import java.applet.*;
public class DocFooter extends Applet {
String date;
String email;
public void init() {
resize(500,100);
date = getParameter("LAST_UPDATED");
email = getParameter("EMAIL");
}
public void paint(Graphics g) {
g.drawString(date + " by ",100, 15);
g.drawString(email,290,15);
}
}
执行javap DocFooter(官网上是
javap DocFooter.class
,但在下面实践的时候会提示ERROR:cound not find
DocFooter.class
,需要去掉.class后缀)得到的输出结果如下:
Compiled from "DocFooter.java"
public class DocFooter extends java.applet.Applet {
java.lang.String date;
java.lang.String email;
public DocFooter();
public void init();
public void paint(java.awt.Graphics);
}
执行javap -c DocFooter(同上,需要去掉.class后缀)
得到的输出结果如下:
Compiled from "DocFooter.java"
public class DocFooter extends java.applet.Applet {
java.lang.String date;
java.lang.String email;
public DocFooter();
Code:
0: aload_0
1: invokespecial #1 // Method java/applet/Applet."":()V
4: return
public void init();
Code:
0: aload_0
1: sipush 500
4: bipush 100
6: invokevirtual #2 // Method resize:(II)V
9: aload_0
10: aload_0
11: ldc #3 // String LAST_UPDATED
13: invokevirtual #4 // Method getParameter:(Ljava/lang/String;)Ljava/lang/String;
16: putfield #5 // Field date:Ljava/lang/String;
19: aload_0
20: aload_0
21: ldc #6 // String EMAIL
23: invokevirtual #4 // Method getParameter:(Ljava/lang/String;)Ljava/lang/String;
26: putfield #7 // Field email:Ljava/lang/String;
29: return
public void paint(java.awt.Graphics);
Code:
0: aload_1
1: new #8 // class java/lang/StringBuilder
4: dup
5: invokespecial #9 // Method java/lang/StringBuilder."":()V
8: aload_0
9: getfield #5 // Field date:Ljava/lang/String;
12: invokevirtual #10 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
15: ldc #11 // String by
17: invokevirtual #10 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
20: invokevirtual #12 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
23: bipush 100
25: bipush 15
27: invokevirtual #13 // Method java/awt/Graphics.drawString:(Ljava/lang/String;II)V
30: aload_1
31: aload_0
32: getfield #7 // Field email:Ljava/lang/String;
35: sipush 290
38: bipush 15
40: invokevirtual #13 // Method java/awt/Graphics.drawString:(Ljava/lang/String;II)V
43: return
}
三、选项
-help
--help
-?
打印输出javap的帮助信息。
-l
打印线和局部变量表。
-public
只显示public类及成员。
-protected
只显示protected和public类及成员。
-package
只显示包, protected和public类及成员。这是默认的。
-private
-p
显示所有类及成员。
-Jflag
直接将flag传递给运行期系统。例如:
javap -J-version
javap -J-Djava.security.manager -J-Djava.security.policy=MyPolicy MyClassName
-s
打印内部的类型签名。
-sysinfo
显示正在被处理的类的系统信息(路径, 大小, 日期, MD5 hash)。
-constants
显示static final常量.
-c
打印输出反汇编的代码,例如,对于类中的每一种方法,包含Java字节码的指令。这些在Java Virtual Machine Specification文档中有描述。
-verbose
打印堆栈大小,方法中局部变量和参数个数。
-classpathpath
指定javap命令用来查找类的路径。如果指定了它的值,将会覆盖默认的或是在CLASSPATH环境变量中的值。
-bootclasspathpath
指定加载bootstrap类的路径。bootstrap类默认指的是在jre\lib\rt.jar和一些其他jar文件中实现了Java平台核心的类。
-extdirsdirs
覆盖寻找已安装的扩展的路径。默认的扩展安装路径是java.ext.dirs的值。
java -p_javap命令详解 - JackieYeah的个人空间 - OSCHINA - 中文开源技术交流社区相关推荐
- java 实现按规则自增功能_java运算符详解 - osc_74vaali6的个人空间 - OSCHINA - 中文开源技术交流社区...
java基础(2)--运算符详解 自增自减规则 自增自减就是常用的 a = a++ 或者 a = ++a;前者是后缀式,先把a赋值给a,再加一:后者是后缀式,先加一,在赋值给a;而且a++,++a并不 ...
- 高并发服务器开源项目,高并发服务器框架详解 - osc_qgfjs4a5的个人空间 - OSCHINA - 中文开源技术交流社区...
1)如何设计如何扩展 2)什么是高并发 (1)任务:完成某个功能的一个一个目标任务,服务器程序也是不例外的. (2)CPU核心:完成具体任务的,是CPU核心 + 周围的外设(读写磁盘IO.网络IO) ...
- python写等腰三角形的性质_杨辉三角—知识点详解 - osc_8cfq8uoa的个人空间 - OSCHINA - 中文开源技术交流社区...
杨辉三角 杨辉三角(欧洲叫帕斯卡三角)是一个很奇妙的东西,它是我国数学家杨辉在1261年发现的,欧洲的帕斯卡于1654年发现,比我国的巨佬数学家杨辉晚了393年.(在此show一下我的爱国情怀) 铺垫 ...
- linux7的mcelog在哪,mcelog用法详解 - osc_bgoqj0sj的个人空间 - OSCHINA - 中文开源技术交流社区...
手动启动mcelog方法: # mcelog --daemon Run mcelog in daemon mode, waiting for errors from the kernel. 后台服务启 ...
- dw main.less php,less基础详解 - Python测试和开发 - OSCHINA - 中文开源技术交流社区
1.初识less less作为一门CSS扩展语言,也就是说CSS预处理器.(Leaner Style Sheets)简称less,它只不过是为css新增这些的功能,比如说:变量.函数.作用域等等.它的 ...
- java中的v递归的思想,Java中的递归思想 - osc_9lqilnv7的个人空间 - OSCHINA - 中文开源技术交流社区...
递归: 递归的概念:方法自身调用自身则称为递归. 递归的分类: 间接递归:方法A调用方法B,方法B调用方法C,方法C调用方法A. 直接递归: 方法A调用方法A.(常用) 递归的注意事项: 递归一定要出 ...
- java虚拟机jvm_java虚拟机jvm - zhuyuansj的个人空间 - OSCHINA - 中文开源技术交流社区...
Java内存结构和java内存模型的区别.往往很多人会搞起来.这里主要对这2种进行解释并进行操作.经实践会JVM调优和不会JVM调优差别确实很大,足足可以提升服务器一倍的性能. java内存结构:所谓 ...
- java hashmap 去重_HashMap去重 - osc_sj1kgo4z的个人空间 - OSCHINA - 中文开源技术交流社区...
package util; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import ...
- 永真命题java怎么表达,147.命题逻辑 - osc_pll3h24t的个人空间 - OSCHINA - 中文开源技术交流社区...
1.语句 1.1命题 一个或真或假,而不能两者都是的陈述句. 说明: 1)命题是陈述句,而不能是疑问句.命令句.感叹句等: 例如(1)把门关上! (2)你到哪里去? 2)如果命题为真,我们就说它的真值 ...
最新文章
- 使用STC8G1K08制作调频接收模块TEA5767配置电路
- C# 去除文件和文件夹的只读属性
- BZOJ 1920 Luogu P4217 [CTSC2010]产品销售 (模拟费用流、线段树)
- 为什么都用m3u8_为什么中国人都喜欢用红砖盖房?
- python 文本相似度计算函数_四种计算文本相似度的方法对比
- 用Python做一个简单的翻译工具
- sap甲方_带你走进SAP项目实施过程——前言
- poj 2417 Discrete Logging
- 对于防止按钮重复点击的尝试
- [bzoj1066] [SCOI2007]蜥蜴
- webpack5+vue3搭建h5项目模板-(一)-基础配置
- 西门子STEP7、博图里的数据块(DB)编址规则
- 从SHAttered事件谈安全
- vue音乐播放器笔记
- 以退为进还是被逼无奈?创始人王劲离职后,景驰科技该何去何从?
- edge浏览器设置启动时默认打开新标签页
- 管理员已阻止你运行此应用。有关详细信息,请与管理员联系。windows10
- 硬核蹭热点系列:负油价和巴舍利耶模型
- 高清壁纸wallhaven.cc下载图片
- 导航地图哪家强?谷歌地图超高分辨率完爆同类型对手
热门文章
- 【转】BMP图像文件格式
- [Unity3d]多个摄像机叠加效果
- DHCP option 150与option 66的区别
- linux下rpm方式安装mysql(2012-5-12)
- pyinstaller打包执行exe出现“ModuleNotFoundError: No module named ‘scipy.spatial.transform._rotation_group”
- 如何用AD20打开ddb文件
- 服务器主板装w7系统死机,解决win7安装过程死机现象有一招
- 希赛软件设计师视频教程-3.1 进程(第三部分) 标清
- SWOT分析是神马?
- Android监听事件