`
wanxiaotao12
  • 浏览: 456115 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

javap反编译命令的使用

 
阅读更多

Javap 用法  

 

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

1,javap -verbose  类名 

 

或: javap -verbose  类名 >> 1.txt   将反编译的内容存放到1.txt
   得到的信息如下: 

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 类名 

比如某个类: 
 

Java代码   收藏代码
  1. package test;  
  2.    
  3. public class Test {  
  4.    
  5.     int number = 5;  
  6.    
  7.     public void sayHello() {  
  8.         System.out.println("Hello");  
  9.     }  
  10. }  



  则: 
   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: 
  则可以看到字节码了: 

Java代码   收藏代码
  1. C:\temp\javaptest>javap -c Test  
  2. Compiled from "Test.java"  
  3. public class test.Test extends java.lang.Object{  
  4. int number;  
  5.    
  6. public test.Test();  
  7.   Code:  
  8.    0:   aload_0  
  9.    1:   invokespecial   #1//Method java/lang/Object."<init>":()V  
  10.    4:   aload_0  
  11.    5:   iconst_5  
  12.    6:   putfield        #2//Field number:I  
  13.    9:   return  
  14.    
  15. public void sayHello();  
  16.   Code:  
  17.    0:   getstatic       #3//Field java/lang/System.out:Ljava/io/PrintStream;  
  18.    3:   ldc     #4//String Hello  
  19.    5:   invokevirtual   #5//Method java/io/PrintStream.println:(Ljava/lang/String;)V  
  20.    8:   return  
  21.    
  22. }  



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

-public 只显示 public 类及成员。 
  -protected 只显示 protected 和 public 类及成员。 
  -package 只显示包、protected 和 public 类及成员。这是缺省设置。 
  -private 显示所有类和成员。 <!--EndFragment-->

分享到:
评论

相关推荐

    windows命令行中java和javac、javap使用详解(java编译命令)

    最近重新复习了一下java基础,这里便讲讲对于一个类文件如何编译、运行、反编译的。也让自己加深一下印象

    eclipse.BytecodeOutline插件

    在遇到一些小问题的时候我们经常会使用Javap反编译取得字节码来分析,虽然Javap能完成这个工作,但是有两个缺点,一方面操作麻烦,需要很多步骤,一方面没有文档注释,对新手来说看起字节码来比较麻烦。这里推荐一个...

    eclipse配置javap命令的方法

    本篇文章主要介绍了如何为eclipse配置javap命令,在配置过程中会出现的小问题的解决方法,非常实用,需要的朋友可以参考下

    synchronize底层实现原理

    Java文件想要看字节码通常使用 javap 命令将java的class文件反汇编,具体操作步骤如下: 1. 先写好一个SynchronizedTest.java文件(下面贴出) 2. 在java文件的目录下,使用命令 javac SynchronizedTest.java 编译,...

    java开源包8

    目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当...

    java开源包1

    目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当...

    java开源包11

    目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当...

    java开源包2

    目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当...

    java开源包3

    目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当...

    java开源包6

    目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当...

    java开源包5

    目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当...

    java开源包10

    目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当...

    java开源包4

    目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当...

    java开源包7

    目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当...

    java开源包9

    目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当...

    java开源包101

    目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当...

    Java资源包01

    目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

Global site tag (gtag.js) - Google Analytics