我发现Hotswapagent在SE和EE应用程序中的工作方式不同。在SE应用程序中,我可以向类添加一个新属性(例如,私有Long x;),而不存在任何问题,Hotswap可以更新代码。但是我无法在JSF中的EE应用程序中做到这一点,我得到了“虚拟机不支持此操作:模式更改未实现”。
我的EE应用程序是Netbeans 8.2中的Maven企业应用程序(ejb、web、ear项目)和Wildfly 10。我使用的是DCEVM (jdk1.8.0_112)和Hotswapagent 1.1.0。
简单的代码更改(例如编辑方法体)在SE和EE应用程序中都是有效的,但它既不能处理ejb中的新属性创建,也不能处理web项目中的新属性创建。我想知道我是否在设置上犯了错误,或者这是因为SE和EE环境之间的差异。谢谢你的建议。
发布于 2017-08-18 13:37:44
这没什么问题。只有在我以调试模式启动应用程序时。
发布于 2017-10-05 19:21:11
我希望添加一个字段将被视为模式更改(在这种情况下,您将得到Java和Java中的异常)。但是Java是通过在运行时修改类(字节码)来指定的。我想,当您插入一个字段时,不仅仅是添加了这个字段,还引入了一些合成的getter和/或setter,这无疑是一种模式更改。
发布于 2018-05-16 18:42:17
HotswapAgent在JVM级别上工作,Java和Java之间应该没有区别。很可能您的Wildfly服务器不使用DCEVM,请检查您的设置。
https://stackoverflow.com/questions/45742511
复制相似问题