如何解压、提取并打开 JAR 文件

如何解压、提取并打开 JAR 文件

快速答案只想查看内容时,可直接用 jarpeek 打开而无需解压;在终端运行 jar tf app.jar 可以列出文件;使用 jar xf app.jar 或 unzip app.jar -d app-contents 可以解压到新目录。解压只能得到归档内容,不能恢复原始 Java 源码。

需要可读 Java 而不是原始 CLASS 字节时,可把整个 JAR 反编译为 Java 源码 ZIP。仅解压文件不会还原源码。

先确认你真正需要的操作

打开、解压和反编译 JAR 是三种不同操作。查看器展示归档树并按需打开条目;解压会把全部条目写入磁盘;反编译则把 CLASS 字节码还原成可读 Java。

只需查找 Manifest、配置、包或资源时,直接查看更快,也不会产生一整个输出目录。需要批量复制或编辑资源时再解压;需要阅读 Java 实现时,则在定位 Class 后使用反编译器。

查看:不落盘浏览归档内容

解压:把归档文件复制到目录

反编译:从 .class 字节码重建可读 Java

在命令行列出并解压 JAR

JDK 自带 jar 命令。先列出内容,确认将要写入哪些文件;再创建独立目标目录并在其中解压,避免输出与现有项目文件混在一起。

macOS 和 Linux 通常也提供 unzip。Windows 可以在 PowerShell 中使用同样的 JDK 命令,或使用可信的归档工具。把 .jar 改名为 .zip 只是帮助部分图形工具识别,文件格式本身没有变化。

方法一:使用 JDK 的 jar 命令

从 app.jar 所在目录开始,依次执行以下命令;最后一行会返回原目录。

jar tf app.jar

mkdir app-contents

cd app-contents

jar xf ../app.jar

cd ..

解压后的条目位于 app-contents,原始 app.jar 保持不变。

方法二:使用 unzip

也可以从 app.jar 所在目录直接解压到另一个目标目录。这是独立方案,无需先执行方法一。

unzip app.jar -d app-unzipped

解压后的条目位于 app-unzipped。JDK 工具的选项定义可参考 Oracle jar 命令文档(JDK 25)。

看懂解压后的内容

多数 JAR 按 Java 包路径保存编译后的 .class,并包含 JSON、Properties 等资源及 META-INF 目录。META-INF/MANIFEST.MF 可能记录应用入口、实现版本、类路径或自动模块名。

框架归档有自己的布局。Spring Boot 可执行 JAR常把应用类放在 BOOT-INF/classes、依赖放在 BOOT-INF/lib;WAR 通常使用 WEB-INF/classes 与 WEB-INF/lib。排查打包和依赖问题时,这些结构非常关键。

META-INF/MANIFEST.MF:启动与构建信息

*.class:编译后的 JVM 类型,不是源码文本

资源:配置、服务描述、模板与静态文件

BOOT-INF 或 WEB-INF:框架约定的应用布局

执行前先检查

解压本身不会执行归档,但对未知 JAR 运行 java -jar 会执行其中代码。应确认文件来源,有条件时核对发布者提供的校验值或签名,并先查看 Manifest 与包结构。

解压未知归档时使用新目录,不要覆盖源码仓库或应用目录中的现有文件。jarpeek 只在浏览器中解析归档和 Class,并且刻意不执行 JAR 中的代码。

来源不可信时,应把 JAR 当作其他可执行文件对待。查看或解压不能替代常规安全检查。

获得可读 Java 源码

解压后用文本编辑器打开 .class 只会看到二进制内容,因为它保存的是 Class 文件结构和 JVM 指令。Java 反编译器可以重建类似源码的输出,但注释、原始格式和部分名称并不在字节码中,因此结果不是原工程的精确副本。

处理完整归档时,jarpeek 可以在浏览器中反编译 Class 并导出重建的 .java;处理单个 Class 时,可按打开 CLASS 文件指南使用 CLASS 反编译器,并在需要确认真实编译行为时对照字节码和常量池。

源码视图适合阅读

字节码视图用于确认真实 JVM 指令

结构与常量池用于查看类元数据

把反编译结果视为重建代码

相关推荐

梓彤名字的含义与寓意
beat365唯一网址

梓彤名字的含义与寓意

⌛ 10-01 👁️ 6662
韩国人为什么那么漂亮(韩国人美貌原因)
365bet手机在线网页

韩国人为什么那么漂亮(韩国人美貌原因)

⌛ 01-11 👁️ 3632
【理性购彩】乐享竞猜欧洲杯7月3日赛程预告
365bet手机在线网页

【理性购彩】乐享竞猜欧洲杯7月3日赛程预告

⌛ 07-08 👁️ 4814