You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从WAR文件中提取Java源代码?已尝试多种方法未果

从WAR文件提取Java源代码的可行方法

一、先解压WAR文件获取编译后的class文件

WAR本质是ZIP格式的压缩包,直接解压就能拿到里面的内容:

  • 命令行方式:用JDK自带的jar命令:jar xvf your-project.war,或者用unzip命令:unzip your-project.war
  • 图形化工具:用WinRAR、7-Zip等解压软件直接打开并提取文件

解压后重点关注WEB-INF/classes目录(存放项目自身的class文件)和WEB-INF/lib目录(依赖的第三方jar包,里面也包含class文件)。

二、反编译class文件得到Java源码

WAR文件本身不会包含原始Java源代码,你之前提取后没发现有价值内容,是因为拿到的是编译后的class文件,需要用反编译工具转换为可读的Java代码。常用工具:

  • JD-GUI:图形化工具,操作简单。打开工具后直接拖拽class文件、classes目录或者jar包进去,就能实时查看反编译后的代码,还能一键导出源码到本地目录。
  • Fernflower:IntelliJ IDEA、Android Studio等IDE内置的反编译器。把解压后的classes目录或lib里的jar包添加到项目依赖中,IDE会自动对class文件进行反编译,点击class文件就能查看源码。也可以单独下载命令行版本运行,执行类似java -jar fernflower.jar input-dir output-dir的命令批量反编译。
  • Procyon:命令行反编译工具,支持批量处理。运行命令:java -jar procyon-decompiler.jar -o 输出目录 目标class文件/目录/jar包,生成的源码可读性较高。

注意事项

  • 反编译后的源码和原始代码会有差异:注释会丢失、泛型信息因擦除无法完全还原、Lambda等语法糖会被展开为匿名内部类,但核心业务逻辑可以完整还原。
  • 如果class文件经过代码混淆处理,反编译后的代码会出现大量无意义的变量名、方法名,可读性极差,甚至部分代码无法正常反编译。
  • 若WAR文件仅包含静态资源(HTML、CSS、JS等),本身没有class文件,那无法提取到Java源代码。

内容的提问来源于stack exchange,提问作者Dadmin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 09:22:16