我在这里处理很多遗留应用程序。其中一个(部署在生产中)需要编辑,因为没有任何日志。
我反编译了它,但我不知道如何在这种情况下重新组装。由于编译器优化,我什至无法重新编译已编辑的单个类。
(我正在使用 Java 6)
对不起,如果我的英语不好,我只是一个大三学生
我在这里处理很多遗留应用程序。其中一个(部署在生产中)需要编辑,因为没有任何日志。
我反编译了它,但我不知道如何在这种情况下重新组装。由于编译器优化,我什至无法重新编译已编辑的单个类。
(我正在使用 Java 6)
对不起,如果我的英语不好,我只是一个大三学生
不。WAR 文件只是一个专门的 JAR 文件,除了已编译的字节码之外,它还包含 JSP 文件、静态 HTML 文件和告诉 Web 服务器如何部署应用程序的描述符文件。它不包含的是原始源代码。这意味着您唯一的选择是使用反编译的代码,或者向原始开发人员询问源代码。
正如您所发现的,编译和反编译是有损过程,因此您通常无法重新编译反编译的代码,即使它确实编译,它也可能与原始二进制文件不同。
一种替代方法是使用Krakatau disassembler 和 assembler。Krakatau 可以将 Java 字节码往返转换为人类可读的文本格式,从而可以轻松无损地编辑字节码。主要的缺点是你必须对 Java 字节码有很好的理解才能理解反汇编,而且它比 Java 源代码更难阅读或编辑。