我正在开发一个加载Groovy脚本的Java项目。一切都按预期工作,除了引用其他groovy脚本的groovy脚本,在本例中是一个实用程序类。每当执行包含所述实用程序类的脚本时,插件加载器抛出异常“groovy.lang.MissingPropertyException:No such property:Util。
在我怀疑Java代码出现问题之前,我想首先了解Groovy如何“找到”其他类。如果我在eclipse中运行这个项目,并且包含所有这些groovy脚本的整个项目目录都在类路径中,那么所有groovy脚本是否能够相互“找到”?
还是其他任何想法?
答案 0 :(得分:1)
Groovy区分脚本和类。如果Groovy文件包含类定义之外的一些代码,那么它被认为是一个脚本,它被编译成一个位于默认包中的类(无论package
声明中设置了什么)。
我不知道你如何调用Groovy脚本,但如果你使用GroovyShell
类,那么GroovyShell
有一个参数为ClassLoader
类型的构造函数,你可以通过您当前的类加载器或包含其他已编译的Groovy脚本的自定义类加载器。或者,如果使用GroovyScriptEngine
,您可以将参考传递到脚本所在的目录,引擎将为您编译它们,并使它们可用于该目录中的其他脚本。
有关将Groovy嵌入Java的更多信息,请访问:http://groovy.codehaus.org/Embedding+Groovy。
但总的来说我需要了解更多关于你的设置(文件夹结构,构建工具,你在构建过程中编译groovy代码,你如何从java运行groovy代码,你如何从groovy调用groovy脚本,怎么做你组织你的类路径等)给你一些更精确的建议。