类似的问题是 动态类重新加载仅在调试模式下工作,为什么/如何真正工作? ,但我仍然感到困惑,我还有其他问题。
当我开发 Web 应用程序并使用 tomcat 时,如果我使用调试模式启动它。修改后的代码无需重启即可立即生效。
如何实施?
为什么修改代码的效果是由tomcat启动方式决定的?
为什么更改方法名称后更改的代码无法生效?(我知道如果我更改方法体的代码,它可以工作)
类似的问题是 动态类重新加载仅在调试模式下工作,为什么/如何真正工作? ,但我仍然感到困惑,我还有其他问题。
当我开发 Web 应用程序并使用 tomcat 时,如果我使用调试模式启动它。修改后的代码无需重启即可立即生效。
如何实施?
为什么修改代码的效果是由tomcat启动方式决定的?
为什么更改方法名称后更改的代码无法生效?(我知道如果我更改方法体的代码,它可以工作)
Q> 为什么修改代码的效果是由tomcat启动方式决定的?
A> Hotswap功能是 JPDA(Java TM平台调试器体系结构)的一项功能。它是在 Java v1.4.2 中添加的。阅读链接以获取更多信息。
Q> 如何实现?
A> 这是 HotSpot JVM 的一个特性
Q> 为什么修改方法名后代码不能生效?
A> 我猜 - 因为支持更改的方法签名需要更多的工作来实现。这就像在运行时重新链接每个类/方法。汽车类比:这就像在驾驶时更换所有四个轮胎;-)。如果您需要此功能,请考虑使用其他 3rd 方工具,例如 JRebel。