我之前问过类似的问题,但想澄清一下 GroovyScriptEngine 的机制以及如何执行类加载。我有一个 Vaadin Web 应用程序,其中包含 WEB-INF 中的 groovy 类。 Web 应用程序通过 GroovyScriptEngine 加载 UI 逻辑。以下是导致错误的一系列事件:
- 将war部署到tomcat并启动服务器,应用程序按预期运行
- 我对位于展开的 WEB-INF 文件夹中的 groovy 文件进行了无关紧要的更改(例如,备注)
- 刷新页面,GSE 显然会重新加载类,并且应用程序会出现 GroovyCastException 异常:无法将类为“com.company.myclass”的对象“com.company.myclass@7cde31f8”转换为类“com.company.myclass”。
我知道这可能是一个类加载器问题。建议?我认为 GroovyScriptEngine 的全部意义在于它可以处理热编辑的 Groovy 类,而无需重新启动容器。
最佳答案
这肯定是类加载器的问题。 如果您需要重新加载类(我想是为了更快的开发),请尝试 JRebel 。与 groovy 和 tomcat 配合良好。
关于java - 脚本修改后部署的 Web 应用程序中发生 Groovy 转换异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18899539/