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