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

时间:2015-06-22 16:04:21

标签: java eclipse war ear


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

请建议最佳方式    1)从战争/耳朵中检索源代码    2)比较&使用war / ear中的代码合并/更新可用的源代码,但在可用的源代码中缺少(我正在使用ECLIPSE IDE)

提前致谢

5 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:3)

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

我不确定是否有任何开箱即用的工具可以将原始来源与JAD之类的反编译源进行比较/差异化。另外请记住,将类反编译回源代码并不会产生看起来与原始源相同的源代码 - 代码样式将会有所不同,甚至可能是某些代码结构。在原始源和反编译源之间进行区分很难。

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

答案 2 :(得分:3)

确切答案:无法从let encodedPayload = this.token.split('.')[1]; let payload = encodedPayload.replace(/-/g, '+').replace(/_/g, '/').replace(/,/g,'='); 获取原始源代码(.java文件),而不是warjar存档)。创建java文件时,您可以决定是否要包含jar文件。只有java反编译器可以提供帮助,请参阅其他答案。

答案 3 :(得分:0)

使用JD GUI可以将源代码和Java代码一起使用,但是您需要

答案 4 :(得分:0)

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

使用任何反编译器打开这些jar文件,您都可以在其中找到class / java文件。