当前位置: 首页 > 面试题库 >

在运行时更新Java代码

东方和煦
2023-03-14
问题内容

大约一年前,我偶然发现了Java的一个不错的功能,我一生都找不到。

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

我尝试浏览Java API来激发我的记忆力和谷歌搜索功能,但没有成功。有人可以帮忙吗?


问题答案:

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

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

在我看来,这种事情很少值得麻烦:设计一切以便可以重新加载比设计它要困难得多,以便可以在新过程中完全重新启动。如果在流程中仅加载了一个版本,则更容易确定确切的代码正在运行。

能够进行演示是一件很整洁的事情,但是对于 大多数 应用程序来说,这是不值得的。我所有的人,当然:)

请注意,一个值得注意的例外是无需重新启动容器即可重新加载Web UI图层的能力:这可以使 工作 变得更加轻松。



 类似资料:
  • 问题内容: 我正在编写用于生产监控的独立Java应用程序。一旦开始运行,就会将api配置为.properties文件中设置的默认值。在运行状态下,可以更改api的配置,并应相应更新.properties文件。有办法实现吗?还是有其他方法可以实现这一目标? 提前致谢 问题答案: Java Properties类(api在此处)指定了应该正确执行的“ load”和“ store”方法。使用FileIn

  • 我想在字符串与给定值匹配时更新该值 有没有人可以使用Java streams API来实现上述功能

  • 问题内容: 该示例非常简单:我想通过仅显示文本(canvas.drawText())来让用户知道应用程序在做什么。然后,出现我的第一条消息,而不是其他消息。我的意思是,我有一个“ setText”方法,但它不会更新。 该视图的文本绘制仅通过在onDraw();中执行一个drawText来起作用,因此setText更改了文本但不显示它。 有人建议我用SurfaceView替换视图,但是仅进行几次更新

  • 我将Drools与Eclipse和Maven一起用于一个进行许多模式匹配的应用程序。我想使用KieScanner自动更新正在运行的KieSession,而无需重新启动应用程序。但这似乎不起作用。 我使用的是7.24.0。t043用于组织。kie和org。流口水。 我只使用我的本地Maven存储库,所以我已经指定了路径并在我的settings.xml.中设置为true,我还验证了使用最新版本创建一个

  • 我找了很长时间,所以在标记为重复之前,请务必阅读。 我有一个函数(),它是用一个参数调用的。我想将该id作为前缀添加到每个日志消息中。每次调用函数时,它都会更改。因此,我想更新记录器模式,将此id添加为前缀。 我读过: 如何配置 如何重新配置 SO和log4j论坛上的许多帖子都在讨论如何在运行时更改配置。它们要么过时,要么根本不起作用。 以下代码基于 log4j2 文档。它打印: 如果我注释掉行然

  • 我不熟悉JTable。 我想在button press事件中在运行时更新jtable数据。 这是我的密码。 但按下“更新”按钮后不会更新。 有人能解决我的问题吗? 提前谢谢。。