专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Java反编译命令的用法

Java反编译命令的用法

更新时间:2022-07-20 07:08:47 来源:动力节点 浏览2312次

用习惯了著名的反编译工具jad的话,如果有的时候单给出class文件,要快速看这个class文件的JDK版本号等,其实不用工具,也可以用JDK自带的javap命令进行反编译输出,下面小结其用法:

1.javap -verbose 类名

得到的信息如下:

Compiled from "Test.java" 
public class Test extends java.lang.Object 
  SourceFile: "Test.java" 
  minor version: 0 
  major version: 50 
  Constant pool: 

可以看出jdk的版本,这个用在判断某些CLASS的版本是否兼容的时候很有用.

2.最常见的不带参数的情况:javap 类名

比如某个类:

package test;     
public class Test {  
       int number = 5;    
    public void sayHello() {  
        System.out.println("Hello");  
    }  
}

则:

   C:\temp\javaptest>javap Test 
Compiled from "Test.java" 
public class test.Test extends java.lang.Object{ 
    int number; 
    public test.Test(); 
    public void sayHello(); 
} 

带参数-c:

则可以看到字节码了:

C:\temp\javaptest>javap -c Test  
Compiled from "Test.java"  
public class test.Test extends java.lang.Object{  
int number;     
public test.Test();  
  Code:  
   0:   aload_0  
   1:   invokespecial   #1; //Method java/lang/Object."":()V  
   4:   aload_0  
   5:   iconst_5  
   6:   putfield        #2; //Field number:I  
   9:   return     
public void sayHello();  
  Code:  
   0:   getstatic       #3; //Field java/lang/System.out:Ljava/io/PrintStream;  
   3:   ldc     #4; //String Hello  
   5:   invokevirtual   #5; //Method java/io/PrintStream.println:(Ljava/lang/String;)V  
   8:   return     
}  

带参数-l: 将显示行号和局部变量表

-public 只显示 public 类及成员。

-protected 只显示 protected 和 public 类及成员。

-package 只显示包、protected 和 public 类及成员。这是缺省设置。

-private 显示所有类和成员。

通过上述介绍,相信大家对Java反编译命令的用法已经有所了解,如果您想了解更多相关知识,不妨来关注一下动力节点的Java开发工具,里面有更丰富的知识等着大家去学习,希望对大家能够有所帮助。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>