博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javap命令详解
阅读量:6931 次
发布时间:2019-06-27

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

hot3.png

一、用

       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-versionjavap -J-Djava.security.manager -J-Djava.security.policy=MyPolicy MyClassName

-s

        打印内部的类型签名

-sysinfo

        显示正在被处理的类的系统信息 (路径, 大小, 日期, MD5 hash)

-constants

        显示static final常量.

-c

        打印输出反汇编的代码,例如,对于类中的一种方法,包含Java字节码的指令。这些在 文档中有描述。

-verbose

        打印堆栈大小,方法中局部变量和参数个数。

-classpath path

        指定javap命令用来查找类的路径。如果指定了它的值,将会覆盖默认的或是在CLASSPATH环境变量中的值

-bootclasspath path

       指定加载bootstrap类的路径。bootstrap类默认指的是在jre\lib\rt.jar和一些其他jar文件中实现了Java平台核心的类。

-extdirs dirs

      覆盖寻找已安装的扩展的路径。默认的扩展安装路径是java.ext.dirs的值。

     

       声明:文章内容翻译自Oracle官网,如有不正确指出,敬请指正,谢谢!

转载于:https://my.oschina.net/jackieyeah/blog/157608

你可能感兴趣的文章
代码的编写之惨烈的教训一
查看>>
Git之提交项目到远程github
查看>>
【源码分享】短信验证码如何对接 WordPressv4.0,短信插件
查看>>
配置隔离组使二层之间不能相互通信,但都可以与外部通信
查看>>
好程序员web前端教程分享CSS元素类型
查看>>
Oracle技术之REMOTE_LISTENER对LOAD_BALANCE影响一
查看>>
如何在mysql中创建数据库与表
查看>>
linux 关于用户的相关设定
查看>>
PIE SDK矢量数据编辑事件的监听
查看>>
警惕IPSec/L2TP ×××被GFW干扰后变明文
查看>>
参数和基类
查看>>
HDFS与其他并行文件系统的比较
查看>>
总结:Windows Server 2003/2008远程桌面无法连接的解决方法
查看>>
我的友情链接
查看>>
MariaDB 10 Slave Crash-Safe需转为GTID复制模式
查看>>
千万别手欠执行stop slave
查看>>
调研《构建之法》指导下的历届作品
查看>>
不懂接口、反射、委托、设计模式足足写了5年的代码 -- 写给初学者(谈美女生成器不谈代码生成器)...
查看>>
如何把程序钉到Windows7任务栏(修正版)
查看>>
MySQL使用分库分表
查看>>