热代码替换是如何工作的

5

我一直在使用Java编程,我非常喜欢Netbeans和其他IDE中的功能,可以在调试程序时进行更改而无需重新启动。我正在用Java编写一个应用程序,如果能够在不重新启动的情况下更新它,那将会很有帮助。我想到了一个主意,可以运行第二个jar文件进行更新,该文件能够做到与IDE相同的事情,但我不知道他们是如何交换代码的。请问有人能给我一些启示吗?谢谢!


我建议阅读这篇文章:https://dev59.com/A2sz5IYBdhLWcg3wTl-r。无论哪种方式,接受的答案都可能适合您的需求。 - ChiefTwoPencils
1
看一下JDWP,特别是JDI。 - Elliott Frisch
2个回答

3

像Eclipse这样的IDE,在调试时使用JDI(Java debug interface)。它是一组Java API,允许您创建/附加到外部Java虚拟机。这可以与Java Agent结合使用,用于重新定义虚拟机中的类。在调试模式下,Eclipse会创建一个运行您代码的新虚拟机。当您进行编辑和重新编译时,Eclipse会通过发送新的字节码告诉JVM重新定义您已更改的类。

您可以阅读JDI文档,并查看Java instrument类(用于配置类转换器)的相关信息。这里有一个关于设置JDI启动器(启动新JVM)的相关问题。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接