Java 使用 Javap 命令反编译 class 文件为字节码的对应的文本形式(不是汇编)
参考
备注
还可以通过 jad
命令将字节码文件(class)转换为 java 源代码。
步骤
- 要操作的源码
public class Test {
public static void main(String[] args) {
getName();
}
public static void getName(){
System.out.println(Thread.currentThread().getName());
}
}
javac
命令将代码编译为字节码文件,执行完毕后会在当前文件夹下生成 Test.class 文件
javac Test.java
javap
将 Test.class 文件转换为字节码指令(不知道用什么词描述),就会在终端输出字节码指令信息
javap -c Test.class
- 输出
Compiled from "Test.java"
public class Test {
public Test();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: invokestatic #7 // Method getName:()V
3: return
public static void getName();
Code:
0: getstatic #12 // Field java/lang/System.out:Ljava/io/PrintStream;
3: invokestatic #18 // Method java/lang/Thread.currentThread:()Ljava/lang/Thread;
6: invokevirtual #24 // Method java/lang/Thread.getName:()Ljava/lang/String;
9: invokevirtual #27 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
12: return
}
javap 命令参数
用法: javap <options> <classes>
其中, 可能的选项包括:
--help -help -h -? 输出此帮助消息
-version 版本信息
-v -verbose 输出附加信息
-l 输出行号和本地变量表
-public 仅显示公共类和成员
-protected 显示受保护的/公共类和成员
-package 显示程序包/受保护的/公共类
和成员 (默认)
-p -private 显示所有类和成员
-c 对代码进行反汇编
-s 输出内部类型签名
-sysinfo 显示正在处理的类的
系统信息(路径、大小、日期、SHA-256 散列)
-constants 显示最终常量
--module <模块>, -m <模块> 指定包含要反汇编的类的模块
-J<vm-option> 指定 VM 选项
--module-path <路径> 指定查找应用程序模块的位置
--system <jdk> 指定查找系统模块的位置
--class-path <路径> 指定查找用户类文件的位置
-classpath <路径> 指定查找用户类文件的位置
-cp <路径> 指定查找用户类文件的位置
-bootclasspath <路径> 覆盖引导类文件的位置
--multi-release <version> 指定要在多发行版 JAR 文件中使用的版本
GNU 样式的选项可使用 = (而非空白) 来分隔选项名称
及其值。
每个类可由其文件名, URL 或其
全限定类名指定。示例:
path/to/MyClass.class
jar:file:///path/to/MyJar.jar!/mypkg/MyClass.class
java.lang.Object
博 主 :夏秋初
地 址 :https://www.cnblogs.com/xiaqiuchu/p/15967450.html
如果对你有帮助,可以点一下 推荐 或者 关注 吗?会让我的分享变得更有动力~
转载时请带上原文链接,谢谢。
地 址 :https://www.cnblogs.com/xiaqiuchu/p/15967450.html
如果对你有帮助,可以点一下 推荐 或者 关注 吗?会让我的分享变得更有动力~
转载时请带上原文链接,谢谢。
标签:
java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义