java - 在运行时更新 Java 代码

标签 java runtime

大约一年前,我偶然发现了 Java 中的一个很好的特性,但我这辈子都找不到了。

通过一些神奇的接口(interface),显然可以声明一些在运行时可替换的类或函数。
我找到了一个很好的示例指南,有人运行了一个打印特定消息的简单小程序,然后他使用我不再记得的方法更新了程序,突然间程序用新的打印功能替换了旧的打印功能。

我曾尝试通过 Java API 来激发我的内存并进行谷歌搜索,但没有成功。这里有人可以帮忙吗?

最佳答案

各种应用容器都可以做到这一点。

基本上您需要在新的 ClassLoader 中重新加载该类(除非您是在调试器下进行此操作,在这种情况下有完全不同的 API 可用)。

在我看来,这种事情很少值得麻烦:设计一切以使其可以重新加载比设计它以使其可以在新进程中完全重新启动要困难得多。如果进程中只加载了一个版本,也更容易确定到底运行的是什么代码。

能够进行演示是一件很不错的事情,但对于大多数应用程序来说,这是不值得的。当然,一切都在我看来:)

请注意,一个值得注意的异常(exception)是无需重新启动容器即可重新加载 Web UI 层的能力:这可以让生活变得很多更轻松。

关于java - 在运行时更新 Java 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3079280/

相关文章:

java - 用Java有效解析Excel数据

算法运行时

java - 如何在运行时获取方法的JavaDoc?

java - 抛出异常时中断

java同时运行和编辑调试

java内存编译

java - 在关闭 Hook 执行期间我可以访问和使用应用程序的哪些部分?

algorithm - 此特定 For 循环的运行时间

java - 对于注释,用户硬编码字符串或常量以获得更好的性能?

java - 使用 Rest Assured RequestSpecification 和 testng 时出错