我在eclipse和IntelliJ IDE中使用了DCEVM热插拔技术,这是一个非常酷的功能。通过在IDE中使用DCEVM,我可以做的是,我可以改变源代码,即在运行时添加/删除/编辑方法,类,属性,而无需重新启动程序。
我的问题是:我想在不使用任何IDE的情况下运行的应用程序中应用相同的功能。更具体地说,正在运行的应用程序源代码(编译后的代码)可以动态更改。对于字节码,如何在DCEVM上部署运行时热交换?
我发现的是:我们可以在不使用IDE的情况下进行热插拔,因为我们可以编写自己的JNI代码来直接挂钩到JVMTI并触发热插拔。
任何想法/帮助都会很有帮助。由于幸运的是我找到了解决办法。我们可以使用HotSwapper插件来解决这类问题。同样的问题也出现在dcevm论坛中:
https://groups.google.com/forum/!主题/hotswapagent Uk3cUdkHNYQ
虽然这个链接https://news.ycombinator.com/item?id=3198497的信息很有帮助,但它是四年前问的,所以我被困在。
现在DCEVM更加智能,它可以支持各种插件,如Hotswapper, AnonymousClassPatch, WatchResources, Hibernate, Spring, Jersey2, Jetty, Tomcat, ZK, Logback, JSF, Seam, ELResolver, OsgiEquinox,甚至我们也可以编写自己的插件,这更容易开发。