假设我们正在编写一个Java Swing应用程序,我们使用Eclipse或MyEclipse来开发它。在 Web 应用程序中,您可以更改代码、保存,然后 ant 部署文件负责部署已更改的文件。然后,您只需刷新或硬刷新网页,更改就会出现在那里。我们可以对 Swing 应用程序做同样的事情,这样我们就不必在每次进行更改时从头开始关闭和打开程序吗?
我不这么认为,因为您需要替换热代码!Maybee使用另一个框架。
你不能简单地这样做,因为一旦JVM启动,它就会加载一次类文件,直到下一次加载请求才会重新加载它。但是,您可以使用 ClassLoader
动态加载修改后的类文件。
以下两篇文章可能会有所帮助:
-
IBM 关于"热类交换"的文章
-
"谁说在 Java 中重新加载运行时类很难?"
第一个是中文的,但你可以看看代码和结果。我认为第二篇文章对 GUI 应用程序更有帮助。
在 MyEclipse 中,您可以在调试模式而不是运行模式下启动应用程序,所做的更改将被推送到目标 VM;如果您所做的更改无法替换,您将看到一个对话框,通知您替换失败,您需要重新启动应用程序。您无需在应用程序中放置任何断点,只需在调试模式下启动就足够了。
正如 Guillaume 上面所说,对类结构的更改通常不会热同步,但现有方法中的更改应该没问题。
显然,热同步更改对正在运行的应用程序的影响程度取决于您的应用程序设计。