我正在尝试为静态java类型的模板引擎实现热交换机制。我遵循Play使用的相同方法!用于重新加载应用程序类的框架。然而,我总是得到以下错误:
Caused by: java.lang.UnsupportedOperationException: class redefinition failed: attempted to change the schema (add/remove fields)
at sun.instrument.InstrumentationImpl.redefineClasses0(Native Method)
at sun.instrument.InstrumentationImpl.redefineClasses(InstrumentationImpl.java:150)
at play.classloading.HotswapAgent.reload(HotswapAgent.java:21)
at com.greenlaw110.rythm.play.RythmPlugin$5.reload(RythmPlugin.java:226)
at com.greenlaw110.rythm.internal.compiler.TemplateClassLoader.detectChange(TemplateClassLoader.java:335)
... 19 more
有人知道游戏如何在这个问题上幸存下来吗?
我想我有点明白发生了什么。Play的应用程序类加载器实际上无法承受这种错误。它所做的是在出现错误时重新启动Play,在这个过程中,Play将创建应用程序类加载器的新实例。我遵循了同样的过程,结果证明是有效的。