我之前问过一个类似的问题,但想了解一下 GroovyScriptEngine 的机制以及如何执行类加载。我有一个 Vaadin Web 应用程序,其中包含 WEB-INF 中的 groovy 类。webapp 通过 GroovyScriptEngine 加载 UI 逻辑。以下是导致错误的一系列事件:
- 将war部署到tomcat并启动服务器,应用程序按预期运行
- 我对位于已展开的 WEB-INF 文件夹中的 groovy 文件进行了微不足道的更改(例如,备注)
- 刷新页面,GSE 显然会重新加载类,并且应用程序会出现 GroovyCastException:无法将具有类 'com.company.myclass' 的对象 'com.company.myclass@7cde31f8' 转换为类 'com.company.myclass'。
我知道这可能是类加载器问题。建议?我认为 GroovyScriptEngine 的全部意义在于它无需重新启动容器即可处理热编辑的 groovy 类。