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

12

我没有最新的源代码,但已经部署了最新版本的war文件到服务器上。

请建议以下最佳方式:
1) 从war/ear文件中检索源代码
2) 将可用源代码与war/ear文件中存在但缺失于可用源代码的代码进行比较、合并和更新(我正在使用ECLIPSE IDE)

提前致谢。


提取war文件并使用反编译器尝试获取其中任何Java类的源文件。 - jgr208
6个回答

18

War文件基本上是zip文件,因此很容易提取。(使用unzip或只需重命名文件)接下来,您可以使用像JD这样的Java反编译器。但您不会获得原始Java代码,因为编译器进行了大量优化。但它应该为您提供一个很好的起点。


5

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

我不确定是否有现成的工具可以将原始源代码与类似JAD生成的反编译源代码进行比较/差异化。另外请注意,将类反编译回源代码不会产生与原始源代码完全相同的源代码——代码风格可能会有所不同,甚至代码结构也会有所不同。要在原始源代码和反编译源代码之间进行区别处理是困难的。

如果您拥有原始源代码但没有当前部署代码的源代码,那么更好的问题是问“为什么没有”?如果在您的构建过程中缺少跟踪每个构建所使用的源代码的内容,则可能更容易解决这个问题,而不是尝试进行笨重且容易出错的操作,例如对其他源代码和反编译源代码进行比较处理。


3
确切的答案是:与jarjava档案)不同,从war中获取原始源代码(.java文件)是不可能的。当您创建一个jar文件时,您可以决定是否包含.java文件。只有Java反编译器才能帮助您,详见其他回答。请注意,保留了HTML标签。

0

使用JD GUI,您可以查看带有Java代码的源代码,但是您需要


0
在war文件夹内,根据您的项目层次结构(如果是maven项目,则这些配置将在Pom.xml中可用-它将定义哪个路径和什么jar名称),在特定模块下,您将拥有每个模块的核心JAR文件。
使用任何反编译器打开这些jar文件,您将能够在其中找到类/Java文件。

0

这是您的完整解决方案。

  1. 如果在创建war文件时,您必须确保已添加代码。
  2. 否则,做一件事。

将war文件部署到服务器上,可能是在tomcat服务器上。

要部署war文件,您需要将该war文件放入webapps文件夹中(C:\ASHIS_CODE\apache-tomcat-9.0.65\webapps)。 输入图像描述 放置后,您需要重新启动tomcat服务器。 然后,在webapps文件夹中将创建与您的war文件名相同的文件夹。

在eclipse或任何其他ide中打开该文件夹,该文件夹包含您的项目代码。

** 希望这能解决您的问题。


1
除非他们将源代码添加到构建步骤中,否则无法从war文件中获取原始源代码(.java文件)。您可以尝试使用Java反编译器,但它不会给您完整的源代码。 - Sheshan Gamage

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接