Intellij 中的 Tapestry 热插拔不适用于 java class 中所做的更改

Tapestry hot swap in Intellij is not working for changes done in java class

在 Tapestry(5.0) 中,当我尝试重新编译我在 java class 中的更改时,我会收到一个弹出窗口说

Hot Swap Failed
abc.xyz : hierarchy changes not implemented
abc.xyz : Operation not supported by the VM

据我所知,这应该可以正常工作,因此我最终重新启动了调试会话,这需要花费相当多的时间。 有什么帮助吗?

您看到此警告,因为 IntelliJ 无法热交换 classes,因为,如消息所述:VM 不支持您的更改的此操作。

Tapestry做的其实不是热插拔,它叫"Live Class Reloading"。

简而言之:Tapestry 不是更新现有的 classes 和 VM 中的对象(热交换正在做的事情),而是丢弃旧的 classes 及其所有状态,并且 loads/initialises 他们再次使用自定义 class 加载程序。它只能对其托管的 classes 执行此操作:page/component/mixin classes 和使用服务接口注册的 IoC 服务实现。如果由 VM 实现,其他一切只能通过热插拔重新加载。

您可以在 official documentation 中阅读有关实时 Class 重新加载的更多详细信息。