Java中的嵌入式groovy,groovy.lang.MissingPropertyException:没有这样的属性:

时间:2012-02-06 18:33:30

标签: java groovy

我正在开发一个加载Groovy脚本的Java项目。一切都按预期工作,除了引用其他groovy脚本的groovy脚本,在本例中是一个实用程序类。每当执行包含所述实用程序类的脚本时,插件加载器抛出异常“groovy.lang.MissingPropertyException:No such property:Util。

在我怀疑Java代码出现问题之前,我想首先了解Groovy如何“找到”其他类。如果我在eclipse中运行这个项目,并且包含所有这些groovy脚本的整个项目目录都在类路径中,那么所有groovy脚本是否能够相互“找到”?

还是其他任何想法?

1 个答案:

答案 0 :(得分:1)

Groovy区分脚本和类。如果Groovy文件包含类定义之外的一些代码,那么它被认为是一个脚本,它被编译成一个位于默认包中的类(无论package声明中设置了什么)。

我不知道你如何调用Groovy脚本,但如果你使用GroovyShell类,那么GroovyShell有一个参数为ClassLoader类型的构造函数,你可以通过您当前的类加载器或包含其他已编译的Groovy脚本的自定义类加载器。或者,如果使用GroovyScriptEngine,您可以将参考传递到脚本所在的目录,引擎将为您编译它们,并使它们可用于该目录中的其他脚本。

有关将Groovy嵌入Java的更多信息,请访问:http://groovy.codehaus.org/Embedding+Groovy

但总的来说我需要了解更多关于你的设置(文件夹结构,构建工具,你在构建过程中编译groovy代码,你如何从java运行groovy代码,你如何从groovy调用groovy脚本,怎么做你组织你的类路径等)给你一些更精确的建议。