【问题标题】:Forcing java to recompile bad class强制java重新编译坏类
【发布时间】:2012-06-23 07:09:14
【问题描述】:

我有一个 jar 文件,我需要对其进行一些小改动。我删除损坏的类文件并用 JAD 反编译它们。但是在我修复它们之后,我需要重新编译。当我重新编译时,我显然会出错,因为我只编辑一个文件。但我知道您可以将修改后的类文件注入到 jar 中。 所以我的问题是:是否可以强制java简单地编译文件以便我可以重新插入它们?唯一的错误是找不到依赖项和包,但是如果我将其放回 jar 中,它会找到它们。

【问题讨论】:

  • 不可能。编译器将始终拒绝生成它不能保证类型安全的代码。为此,它必须具有所有可用的依赖项。但是假设您可以运行您的 JAR,那么您就有了这些依赖项。为什么不将它们放在编译器的类路径中?
  • 欢迎伊森。我不确定 fvu 是否只是发布了一个完全重复的链接(至于“强制 java 编译器”部分,这正如 Jochen 所建议的那样不可行),但我认为您应该能够将其用作答案。

标签: java compilation


【解决方案1】:

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

【讨论】:

  • 这听起来比从 jar 中提取类文件、反编译、更改、再次编译要复杂得多 - 使用更改后的 .jar 在类路径中)并将其放回 .jar文件。
  • 你读过问题吗?引用:当我重新编译时,我显然会出错,因为我只编辑一个文件
  • 是的,我读到了,但我看不出有任何理由说明在类路径中包含 .jar 文件对这种情况没有帮助。
猜你喜欢
  • 1970-01-01
  • 2019-05-03
  • 1970-01-01
  • 1970-01-01
  • 2010-10-31
  • 1970-01-01
  • 1970-01-01
  • 2015-10-16
  • 2012-10-14
相关资源
最近更新 更多