我需要在jar中编辑单个类文件。
我已经成功地从jar中提取了类文件,并且我已经反编译它并找到了我需要更改的逻辑。
但是,我无法重新编译这个类文件,因为它导入了我没有的库,也不知道从哪里获取( netbeans 和 iharder )。
所需的文件都应该在jar中,对吧?我可以将罐子用于此目的吗?
我对Java的总体语法了解不多,所以任何与包或jar文件结构相关的内容都可能超出我的想法......
答案 0 :(得分:0)
JVM只需要能够在运行时找到依赖项。通常,它们将安装在标准位置(类路径)中,而不是与使用它们的jar捆绑在一起。但是,理论上你甚至可以在运行时执行类似下载依赖的操作,并通过类加载器加载它们。
除此之外,反编译和重新编译通常不是一个好主意,因为反编译是一个有损且容易出错的过程。它通常只在简单的情况下起作用,并且具有局限性,正如您所发现的那样。
如果您了解Java字节码,则可以通过使用Krakatau反汇编来编辑类,编辑.j文件,然后重新组装。这允许您编辑任何类文件而无需编译,这意味着您不需要依赖项。无论课程多么复杂,它也都有效,甚至可以用于混淆的课程。