如何从 war 文件中获取 java 源代码?

how to get java source code from war file?


我没有最新的源代码,但在服务器上部署了 war(最新的)文件。

请建议
的最佳方法 1) 从 war/ear
中检索源代码 2) 比较 & Merge/update 可用源代码与 war/ear 中存在但可用源代码中缺少的代码(我正在使用 ECLIPSE IDE)

提前致谢

War 文件基本上是 zip 文件,因此很容易解压。 (使用解压缩或只是重命名文件) 接下来你可以使用像 JD 这样的 Java 反编译器。 但是你不会得到原始的 Java 代码,因为编译器做了很多优化。 但它应该给你一个很好的起点

从 EAR/WAR/Jars 中提取 类 后,使用 JAD 反编译您感兴趣的代码以返回源代码:http://varaneckas.com/jad/

我不确定是否有任何开箱即用的工具可以 compare/diff 您的原始源以及从 JAD 之类的东西生成的反编译源。还要记住,将 类 反编译回源代码不会产生看起来与原始源代码相同的源代码 - 代码风格会有所不同,甚至可能是代码的某些结构。很难在原始源代码和反编译源代码之间进行区分。

如果您有原始源代码但没有当前部署代码的源代码,也许更好的问题是问 'why not'?如果您的构建过程中缺少某些内容,您没有跟踪每个构建使用的源代码,那么这可能是一个更容易解决的问题,而不是像其他源代码之间的差异那样尝试做一些笨拙且容易出错的事情和反编译源?

确切答案:无法从 war 而非 jarjava 存档中获取原始源代码(.java 文件) ).创建 jar 文件时,您可以决定是否要包含 .java 文件。只有 java 反编译器可以提供帮助,请参阅其他答案。

使用 JD GUI 你可以得到带有 java 代码的源代码,但是你需要

在 war 文件夹内,在特定模块下 - 基于您的项目层次结构(如果 Maven 项目 - 这些配置将在 Pom.xml 中可用 - 它将定义哪个路径和什么 jar 名称) 您将拥有每个模块的核心 JAR 文件。

使用任何反编译器打开这些 jar 文件,您将能够在其中找到 class/java 文件..