我在Tomcat上使用Web应用程序的Hot Swap java调试功能。在一些类签名更改后,我得到了“Hot Code Replace Fail”Eclipse对话框 - 我明白了。
在这种情况下我想要的是重新发布应用程序(我可以这样做)并使用新部署的代码。然而调试器stil抱怨,直到我重新启动服务器。因为其他应用程序和长期启动我不希望这样。
有没有办法告诉调试器,新的类版本已经在新的webapp类加载器中重新加载,并且保存以继续?
感谢。
答案 0 :(得分:2)
为什么不试试JRebel? JRebel是一个JVM Java代理,它与应用程序服务器集成,使类可以使用现有的类加载器重新加载。只重新编译已更改的类,并立即在正在运行的应用程序中重新加载。 JRebel插入IDE并构建系统。类和静态资源直接从工作空间加载。 http://zeroturnaround.com/software/jrebel/
此致 安德烈
答案 1 :(得分:0)
有一个旧的PHD项目。制作它的人是由Oracle带来的,但是他的工作没有进入Java 8,并且希望能在Java 9中看到,但更有可能在Java 10中。我想Java 8有一个新版本。我还没试过。
我的原始问题以获取更多信息:Advanced Code Hot Swapping in JDK 8?
Github上的项目页面:https://github.com/dcevm/dcevm
有了这个,您可以热替换几乎任何类更改,从而使您无需重启JDK。 (除了对静态物体和单体的副作用,但这是合乎逻辑的)
答案 2 :(得分:0)
您是否尝试过“服务器选项” - 服务模块而不与发布一起发布?
也不确定您对其他应用的评价。