JDK工具-javap命令
  • 2023-05-07 13:19:46
  • 1901 热度
  • 0 评论

我们如何反编译指定的Java字节码文件呢?在Sun公司提供的JDK中,就已经内置了Java字节码文件反编译工具javap.exe(位于JDK安装目录的bin文件夹下)。

我们可以在dos窗口中使用javap来反汇编指定的Java字节码文件。在使用javap的相关dos命令之前,你必须确保已经将JDK安装目录\bin添加到环境变量path中。

接着,我们就可以使用javap来反编译指定的Java字节码文件了。在此之前,我们先通过javap的帮助命令javap -help查看javap相关指令的用法。


使用javap反编译Java字节码文件


1、使用不带任何选项参数的命令:javap Test

javap Person和javap -package Person的显示结果一样,因为-package选项参数是默认的,用于显示package(不带任何访问修饰符,即我们常说的friendly)、protected、public修饰的类或成员。


使用javap反编译Java字节码文件


2、使用命令:javap -public Test显示public修饰的类或成员。

与此类似,选项参数-protected用于显示protected以上访问级别(protected、public)的类或成员;选项参数-private用于显示private以上访问级别,也就是所有的类或成员。


3、使用命令:javap -public -l Test显示public修饰的类或成员,并显示行号表格和本地变量表格。


4、使用命令:javap -c Test显示Test.class反汇编出的字节码命令。


由于选项参数之间组合较多,因此其他选项参数不再一一截图赘述,仅在下面使用文字进行说明:

-classpath <pathlist>

手动指定用户class字节码文件的存放目录,javap程序将在此目录下查找class文件,多个路径以英文分号分隔。例如:javap -classpath D:\java\test Person(即使DOS窗口的当前工作目录为其他任意路径,该命令均可正确执行)。

-s

打印变量的内部类型签名,例如:javap -classpath D:\java\test -s Person。

-extdirs <dirs>

指定javap搜索已安装的java扩展的位置,默认的java扩展的位置为jre\lib\ext。例如:javap -classpath D:\java\test -extdirs D:\java\myext Person

-bootclasspath <pathlist>

指定使用Java底层类加载器(bootstrap class loader)加载的字节码文件的位置。例如:javap -classpath D:\java\test -bootclasspath D:\java\core Person

-verbose

打印方法参数和本地变量的数量以及栈区大小。

-J<flag>

使用javap.exe来执行java.exe虚拟机的相关命令,例如javap -J-version相当于java -version,可以有多个命令,中间以空格隔开。



alay

Flame

Hello world!

0 评论
留下评论