我正在尝试扩展一个 Eclipse 代码构建器(用于从 Hibernate VO 生成 DTO)——它使用 Groovy 作为其模板系统。
它用于创建 groovy 脚本的代码有点奇怪(不是我在 Groovy 文档中看到的),但它可以正常工作,主要是:
GroovyShell shell = new GroovyShell();
script = shell.parse(source);
然后,稍后:
Binding binding = (bindings == null ? new Binding() : new Binding(bindings));
Script scriptInstance = InvokerHelper.createScript(script.getClass(), binding);
scriptInstance.setProperty("out", out);
scriptInstance.run();
out.flush();
现在,这工作得很好,直到它引用一个不直接在项目中的对象。在脚本中,它遍历它正在处理的 Class 的属性——当它这样做时,Groovy 会查看所有方法,当它找不到某个方法参数的 Class 定义时,它就会出错。在这种情况下,当它发现任何对 Hibernate 的引用时,它就会死去,但我相信它会因为更多的东西而崩溃。它不需要对他们做任何事情,但如果不知道他们显然是什么,它就无法生存。
脚本似乎没有可以提供任何类路径信息的类加载器,所以我尝试将它提供给GroovyShell - 没有区别。
解决这个问题的正确方法是什么,以便 Groovy 解释器可以找到我的项目引用的 Jars?