编译从现有jar编辑的单个类文件,没有依赖项

时间:2016-11-02 05:09:30

标签: java jar decompiler

我需要在jar中编辑单个类文件。

我已经成功地从jar中提取了类文件,并且我已经反编译它并找到了我需要更改的逻辑。

但是,我无法重新编译这个类文件,因为它导入了我没有的库,也不知道从哪里获取( netbeans iharder )。

所需的文件都应该在jar中,对吧?我可以将罐子用于此目的吗?

我对Java的总体语法了解不多,所以任何与包或jar文件结构相关的内容都可能超出我的想法......

1 个答案:

答案 0 :(得分:0)

JVM只需要能够在运行时找到依赖项。通常,它们将安装在标准位置(类路径)中,而不是与使用它们的jar捆绑在一起。但是,理论上你甚至可以在运行时执行类似下载依赖的操作,并通过类加载器加载它们。

除此之外,反编译和重新编译通常不是一个好主意,因为反编译是一个有损且容易出错的过程。它通常只在简单的情况下起作用,并且具有局限性,正如您所发现的那样。

如果您了解Java字节码,则可以通过使用Krakatau反汇编来编辑类,编辑.j文件,然后重新组装。这允许您编辑任何类文件而无需编译,这意味着您不需要依赖项。无论课程多么复杂,它也都有效,甚至可以用于混淆的课程。