用习惯了著名的反编译工具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 类名
比如某个类:
- 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."<init>":()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 显示所有类和成员。 <!--EndFragment-->
相关推荐
下面是一个简单的例子,演示了如何使用 javap 命令来反编译一个 class 文件。 首先,我们编写一个简单的 Java 类: ```java package com.thundersoft.metadata.test.kafka; import org.apache.kafka.clients....
`javap` 是 Java 开发工具包 (JDK) 中的一个重要工具,主要用于反编译 `.class` 文件中的字节码。通过 `javap`,开发者能够深入了解 Java 编译器是如何处理源代码并生成字节码的,这对于优化程序性能和理解 Java ...
总结来说,要利用Windows命令行正确地编译、运行和反编译Java类文件,需要了解命令行的基本操作,正确安装和配置JDK,以及熟悉javac、java和javap这三个命令的具体选项和使用场景。通过这样的过程,我们可以更深入地...
此外,还学习了如何使用`javap`命令来查看字节码文件的具体内容,这对于理解Java程序在底层的运行机制非常重要。 以上就是关于Java运行原理及javap命令运行结果的相关知识点的详细介绍。希望对你有所帮助!
尽管可以使用`javap`命令获取部分元数据,但无法获得源代码级别的详细信息。这就催生了反编译工具的需求。反编译工具通过解析.class文件的字节码,将其还原成接近原始Java源代码的形式,帮助开发者理解已编译的代码...
1. javap:Java自带的反编译工具,它可以从.class文件中提取关于方法的元信息,但不会反编译成完整源代码。 2. Jad:一个流行的第三方反编译工具,能够将.class文件反编译成可读性较好的Java源代码。Jad在Linux下...
然而,有时我们可能需要对Java字节码进行分析,这时就用到了`javap`命令,它是Java Development Kit (JDK)自带的一个反编译工具。本文将详细介绍如何在Eclipse中配置`javap`命令,以便在开发过程中方便地查看和理解...
在Java开发环境中,如JDK已经安装,那么你可以使用内置的`javap`命令来查看简单的反编译信息。`javap`是JDK自带的一个命令行工具,它能够显示类、接口和它们的属性、方法的详细信息。但这只是一个基本的反编译器,...
2. **javap工具的使用**:详细介绍如何使用`javap`命令,包括基础用法和`-verbose`等高级选项的含义与作用。 3. **JVM指令集**:讲解JVM指令集的主要指令,如ALOAD(加载本地变量)、ICONST(常量加载)、IRETURN...
不过,Java反编译工具通常需要JDK环境来运行,因为它们依赖于JDK中的`javap`命令和其他工具来进行反编译。 在Java反编译领域,有一些知名的工具,如JD-GUI、JAD、Procyon和FernFlower等。这些工具各有特点,例如JD-...
例如,使用`jad -o output.txt your_jar_file.jar`命令可以将JAR中的所有类反编译到名为`output.txt`的文本文件中。 3. **反编译单个类**:如果你只想反编译JAR中的某个特定类,可以指定类名。例如,`jad -c ...
在遇到一些小问题的时候我们经常会使用Javap反编译取得字节码来分析,虽然Javap能完成这个工作,但是有两个缺点,一方面操作麻烦,需要很多步骤,一方面没有文档注释,对新手来说看起字节码来比较麻烦。这里推荐一个...
Java代码编译和反编译的那些事儿 Java代码编译和反编译是Java开发者必须掌握的基本...例如,我们可以使用反编译工具来分析Java的枚举类型、Synchronized的实现原理、Switch对整型、字符型、字符串型的具体实现细节等。
这个表达式在Java中的行为可以通过反编译成Java虚拟机(JVM)指令来理解。 首先,让我们回顾一下给定的代码片段: ```java public class Test { public static void main(String[] args) { int i = 0; i = i++; ...
例如,要编译名为`HelloWorld.java`的源文件,可以使用以下命令: ``` javac HelloWorld.java ``` 2. **java**:Java解释器 `java` 命令用于运行编译后的Java程序。当你拥有一个或多个`.class`文件时,使用此...
5. javap:这个工具用于反编译.class文件,查看Java类文件的内部结构。它可以显示类的方法、字段等信息。例如,使用命令`javap -l MyClass`可以查看类MyClass的详细信息。 6. jdb.exe:Java调试器,用于调试Java...
`javap`是Java的反汇编器,它可以显示关于类文件的详细信息。例如,`javap -c HelloWorld`会显示`HelloWorld.class`的字节码和解码后的指令。 六、javadoc 命令 `javadoc`用于生成API文档,它从源代码中的注释中...
例如,`javap -c HelloWorld` 可以看到`HelloWorld.class`的反编译结果。 6. **jconsole**:Java Monitoring and Management Console,用于监控Java应用的性能和内存使用情况。 7. **jvisualvm**:集成在JDK中的多...
5. `javap`: 这是一个类文件反汇编器,用于查看编译后的字节码。通过`javap YourClassName`,你可以看到类的公共成员、常量池、方法签名等信息。加上不同选项,如`-c`可以看到字节码指令,`-s`能看到内部类型的签名...