`
wanxiaotao12
  • 浏览: 472214 次
  • 性别: 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-->

分享到:
评论

相关推荐

    javap命令的使用技巧

    下面是一个简单的例子,演示了如何使用 javap 命令来反编译一个 class 文件。 首先,我们编写一个简单的 Java 类: ```java package com.thundersoft.metadata.test.kafka; import org.apache.kafka.clients....

    javap使用(1).docx

    `javap` 是 Java 开发工具包 (JDK) 中的一个重要工具,主要用于反编译 `.class` 文件中的字节码。通过 `javap`,开发者能够深入了解 Java 编译器是如何处理源代码并生成字节码的,这对于优化程序性能和理解 Java ...

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

    总结来说,要利用Windows命令行正确地编译、运行和反编译Java类文件,需要了解命令行的基本操作,正确安装和配置JDK,以及熟悉javac、java和javap这三个命令的具体选项和使用场景。通过这样的过程,我们可以更深入地...

    Java运行原理 javap命令运行结果

    此外,还学习了如何使用`javap`命令来查看字节码文件的具体内容,这对于理解Java程序在底层的运行机制非常重要。 以上就是关于Java运行原理及javap命令运行结果的相关知识点的详细介绍。希望对你有所帮助!

    .class 文件反编译工具

    尽管可以使用`javap`命令获取部分元数据,但无法获得源代码级别的详细信息。这就催生了反编译工具的需求。反编译工具通过解析.class文件的字节码,将其还原成接近原始Java源代码的形式,帮助开发者理解已编译的代码...

    Java代码的编译与反编译

    1. javap:Java自带的反编译工具,它可以从.class文件中提取关于方法的元信息,但不会反编译成完整源代码。 2. Jad:一个流行的第三方反编译工具,能够将.class文件反编译成可读性较好的Java源代码。Jad在Linux下...

    eclipse配置javap命令的方法

    然而,有时我们可能需要对Java字节码进行分析,这时就用到了`javap`命令,它是Java Development Kit (JDK)自带的一个反编译工具。本文将详细介绍如何在Eclipse中配置`javap`命令,以便在开发过程中方便地查看和理解...

    Java反编译工具(附操作教程)

    在Java开发环境中,如JDK已经安装,那么你可以使用内置的`javap`命令来查看简单的反编译信息。`javap`是JDK自带的一个命令行工具,它能够显示类、接口和它们的属性、方法的详细信息。但这只是一个基本的反编译器,...

    HelloWorld的javap -verbose HelloWorld 字节码初探

    2. **javap工具的使用**:详细介绍如何使用`javap`命令,包括基础用法和`-verbose`等高级选项的含义与作用。 3. **JVM指令集**:讲解JVM指令集的主要指令,如ALOAD(加载本地变量)、ICONST(常量加载)、IRETURN...

    java反编译工具

    不过,Java反编译工具通常需要JDK环境来运行,因为它们依赖于JDK中的`javap`命令和其他工具来进行反编译。 在Java反编译领域,有一些知名的工具,如JD-GUI、JAD、Procyon和FernFlower等。这些工具各有特点,例如JD-...

    反编译jar工具 jad

    例如,使用`jad -o output.txt your_jar_file.jar`命令可以将JAR中的所有类反编译到名为`output.txt`的文本文件中。 3. **反编译单个类**:如果你只想反编译JAR中的某个特定类,可以指定类名。例如,`jad -c ...

    eclipse.BytecodeOutline插件

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

    Java代码编译和反编译的那些事儿

    Java代码编译和反编译的那些事儿 Java代码编译和反编译是Java开发者必须掌握的基本...例如,我们可以使用反编译工具来分析Java的枚举类型、Synchronized的实现原理、Switch对整型、字符型、字符串型的具体实现细节等。

    java中对 i=i++ 的 解释(反编译出java虚拟机指令的)

    这个表达式在Java中的行为可以通过反编译成Java虚拟机(JVM)指令来理解。 首先,让我们回顾一下给定的代码片段: ```java public class Test { public static void main(String[] args) { int i = 0; i = i++; ...

    java 2语言命令详解

    例如,要编译名为`HelloWorld.java`的源文件,可以使用以下命令: ``` javac HelloWorld.java ``` 2. **java**:Java解释器 `java` 命令用于运行编译后的Java程序。当你拥有一个或多个`.class`文件时,使用此...

    JAVA命令大全.pdf

    5. javap:这个工具用于反编译.class文件,查看Java类文件的内部结构。它可以显示类的方法、字段等信息。例如,使用命令`javap -l MyClass`可以查看类MyClass的详细信息。 6. jdb.exe:Java调试器,用于调试Java...

    Java2语言命令详解

    `javap`是Java的反汇编器,它可以显示关于类文件的详细信息。例如,`javap -c HelloWorld`会显示`HelloWorld.class`的字节码和解码后的指令。 六、javadoc 命令 `javadoc`用于生成API文档,它从源代码中的注释中...

    jdk常用命令

    例如,`javap -c HelloWorld` 可以看到`HelloWorld.class`的反编译结果。 6. **jconsole**:Java Monitoring and Management Console,用于监控Java应用的性能和内存使用情况。 7. **jvisualvm**:集成在JDK中的多...

    JAVA命令大全[参考].pdf

    5. `javap`: 这是一个类文件反汇编器,用于查看编译后的字节码。通过`javap YourClassName`,你可以看到类的公共成员、常量池、方法签名等信息。加上不同选项,如`-c`可以看到字节码指令,`-s`能看到内部类型的签名...

Global site tag (gtag.js) - Google Analytics