2012-06-22 98 views
0

我有一个jar文件,我需要做一个小改动。我删除损坏的类文件并用JAD反编译它们。但是在我修复它们之后,我需要重新编译。当我重新编译我明显得到错误,因为我只编辑一个文件。但我知道你可以将修改后的类文件注入到jar中。 所以我的问题是:是否有可能迫使java编译文件,所以我可以重新插入它们?唯一的错误是依赖和包没有找到,但如果我把它放回jar中它会发现它们。强制java重新编译不良类

+3

不可能。编译器总是会拒绝生成它不能确保的类型安全的代码。为此,它必须提供所有的依赖关系。但假设你可以运行你的JAR,那么你就有这些依赖关系。为什么不把它们放在编译器的类路径上? – Jochen

+1

http://stackoverflow.com/questions/946071/re-compile-a-java-class-from-jar?rq=1 – fvu

+0

欢迎Ethan。我不确定fvu是否刚刚发布了一个链接到一个完全相同的副本(至于“强制java编译器”部分,这是Jochen建议的不可行的),但我认为你应该可以用它作为答案。 –

回答

0

您可以使用实现接口和对象组合的方式开发与添加更改相同的类。在它开发自定义的类加载器来卸载旧的类并加载新的。但这很难做到。

+0

这听起来比从jar中提取类文件,反编译,改变它,再次编译它 - 在classpath中更改.jar)并将其放回到.jar文件中听起来要复杂得多。 –

+0

你有没有读过的问题?引用:当我重新编译时,我明显得到错误,因为我只编辑一个文件 –

+0

是的,我读过,但我没有看到任何理由为什么在类路径中包括.jar文件无助于应对这种情况。 –

相关问题