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的值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269653.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初识RPC概念

什么是RPC RPC 全称 Remote Procedure Call——远程过程调用。在学校学编程,我们写一个函数都是在本地调用就行了。但是在互联网公司,服务都是部署在不同服务器上的分布式系统,如何调用呢? RPC技术简单说就是为了解决远程调用服务…

JAVA编码(41)—— 线程池队列执行任务(ThreadPoolQueue)(1)

废话少说,上代码 package com.sinosoft;import java.util.concurrent.*;/*** Created by xushuyi on 2017/4/9.*/ public class ThreadPoolQueue {/*** 定义线程池中最大的线程数量*/private static final Integer THREADPOOLSIZE 100;/*** 创建线程队列*/private …

Dubbo介绍

1:什是Dubbo 2:架构图 3:节点角色说明 4:调用关系说明

一键去除网页BOM属性【解决乱码,头部空白,#65279问题】

几个常出现的问题: 1.网站打开空白 2.页面头部出现多余的空白 3.网站出现乱码,如“锘�” 解决方法可以是: 1.选用专业的编辑器,例如notepad,sublime,editplus这样不会自动签名。 2.sublime通过如…

java 关闭语句_java.sql.SQLRecoverableException: 关闭的语句

数据库连接池配置:数据库链接在运行时报错:Caused by: java.sql.SQLRecoverableException: 关闭的语句at oracle.jdbc.driver.OracleClosedStatement.exitImplicitCacheToActive(OracleClosedStatement.java:4667)at oracle.jdbc.driver.OraclePreparedS…

编程英语学习【转】

一种绝对提高开发水平的方法 目录 一、概要二、常用单词 2.1、初级单词第一节第二节第三节第四节第五节第六节第七节第九节第十节第十一节第十三节第十四节第十五节第十六节第十七节2.2、高级部分三、《Java语言程序设计》书中单词频率排行四、常见异常与错误翻译 4.1、java中4…

下载的java游戏怎么运行不了_java运行环境下载

java运行环境下载对这款游戏感兴趣的玩家可以来我们网站下载试玩。"No," said Elsie, sharply. "Ill quote you a text: Eat, drink, and be merry, and let me alone.""Its not your sex that I am clasping, but you��YOU, m…

Mac idea使用Command + p 快捷键查看一个类的构造函数需要传入什么参数

Mac idea使用Command p 快捷键查看一个类的构造函数需要传入什么参数 如下图所示

TortoiseGit不同分支合并代码

现在有主分支master和分支day2.现在要把day2上的变更合并到主分支master上! 1.首先切换到目标分支master上。 说明当前分支是master分支。 2.在master分支上查看提交记录,即show log一下。 3.切换到源分支上 4.选中你所有的提交,右键,Cherry …

java jdk 类加载机制_JDK源码阅读之类加载

java类加载类的生命周期(类加载过程)LLIUUVPR加载(Loading)链接(Linking)验证(Verification)准备(Preparation)解析(Resolution)初始化(Initialization)使用(Using)卸载(Unloading) 类类加载器种类BootstrapClassLoader:C编写,负责加载java核心类库Launc…

2017.4.11 AM

练恋有词U28单元单词及应用 转载于:https://www.cnblogs.com/bgd140201219/p/6696472.html

JAVA标识符中含小数点可以吗_数值类型小数点后是否可以接零问题

有些情况下,我们需要数据的精准性,小数部分或多或少要保留几位。而恰巧为整数时,我们需要将整数也加上小数点然后接0的形式来表示。js中,我们常使用 input 框绑定数值变量的形式来提供展示或修改数据,那么大家一定会遇…

volatile不具备原子性

1、理解原子性&#xff1a; 上面说到volatile不具备原子性&#xff0c;那么原子性到底是什么呢&#xff1f;先看如下代码 public class TestVolatile {public static void main(String[] args) {AtomicDemo atomicDemo new AtomicDemo();for (int x 0; x < 10; x) {new Th…

Nginx upstream 配置

1、轮询&#xff08;默认&#xff09;每个请求按时间顺序逐一分配到不同的后端服务器&#xff0c;如果后端服务器down掉&#xff0c;能自动剔除。2、weight指定轮询几率&#xff0c;weight和访问比率成正比&#xff0c;用于后端服务器性能不均的情况。例如&#xff1a;upstream…

apache zookeeper java_zookeeper启动报错java.net.NoRouteToHostException

java.net.NoRouteToHostException: 没有到主机的路由 (Host unreachable)at java.net.PlainSocketImpl.socketConnect(Native Method)at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)at java.net.AbstractPlainSocketImpl.connectToAddress(…

CountDownLatch的理解和使用

闭锁 CountDownLatch概念 CountDownLatch是一个同步工具类&#xff0c;用来协调多个线程之间的同步&#xff0c;或者说起到线程之间的通信&#xff08;而不是用作互斥的作用&#xff09;。 CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后&#xff0c;再继…

汇编语言学习笔记(五)

十六、数组 数组的基本表示方法 numary sdword 2,5,7 numary数组中有三个元素&#xff0c;为sdword类型&#xff0c;分别为2,5,7 empary sdword ?, ?,? empary数组为sdword类型元素&#xff0c;未初始化。 如果数组元素很多可通过 zeroary sdword 100 dup(0) zeroary数组中有…

python 卡方分箱算法_python实现二分类的卡方分箱示例

解决的问题&#xff1a;1、实现了二分类的卡方分箱&#xff1b;2、实现了最大分组限定停止条件&#xff0c;和最小阈值限定停止条件&#xff1b;问题&#xff0c;还不太清楚&#xff0c;后续补充。1、自由度k,如何来确定&#xff0c;卡方阈值的自由度为 分箱数-1&#xff0c;显…