【问题标题】:It is possible to recover the src from a deployed .WAR file?可以从已部署的 .WAR 文件中恢复 src 吗?
【发布时间】:2017-09-24 12:27:25
【问题描述】:

我在这里处理许多遗留应用程序。其中一个(部署在生产中)需要编辑,因为没有任何日志。

我反编译了它,但我不知道在这种情况下如何重新组装。由于编译器优化,我什至无法重新编译已编辑的单个类。

(我使用的是 Java 6)

对不起,如果我的英语不好,我只是一个大三学生

【问题讨论】:

  • 不,一般情况下不会。通常 War 文件只包含已编译的字节码(二进制)文件,源不可用。询问作者,他们可能会为您提供源代码。
  • 我同意@markspace——我可能会将陈述软化为“不切实际,一点也不容易”,而不是说这完全不可能,但你需要做的可能是一个数量级比使用 spring-boot 和 spring-data 从头重写服务更难。
  • 大家好。我们使用方面做了一个周转计划。你们认为我可以在这个问题中更好地描述它吗? @EngineerDollery
  • 这是一个答案吗?如果是的话,我会把它写下来作为答案。可以回答您自己的问题 - 如果您是唯一一个回答正确的人,那么我们鼓励您这样做。

标签: war aop aspectj decompiler jd-gui


【解决方案1】:

没有。 WAR 文件只是一个专门的 JAR 文件,除了已编译的字节码之外,它还包含 JSP 文件、静态 HTML 文件和告诉 Web 服务器如何部署应用程序的描述符文件。它不包含的是原始源代码。这意味着您唯一的选择是使用反编译的代码,或者向原始开发人员询问源代码。

【讨论】:

    【解决方案2】:

    正如您所发现的,编译和反编译是有损过程,因此您通常无法重新编译反编译的代码,即使它确实编译,它也可能与原始二进制文件不同。

    另一种方法是使用Krakatau disassembler and assembler。 Krakatau 可以将 Java 字节码往返转换为人类可读的文本格式,从而可以轻松无损地编辑字节码。主要缺点是你必须对 Java 字节码有很好的理解才能理解反汇编,而且它比 Java 源代码更难阅读或编辑。

    【讨论】:

      猜你喜欢
      • 2013-08-30
      • 2012-07-29
      • 2010-11-13
      • 1970-01-01
      • 2023-04-07
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      • 2014-07-11
      相关资源
      最近更新 更多