【问题标题】:Embedded groovy in Java, groovy.lang.MissingPropertyException: No such property:Java中的嵌入式groovy,groovy.lang.MissingPropertyException:没有这样的属性:
【发布时间】:2012-09-12 15:22:43
【问题描述】:

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

在我怀疑 Java 代码有问题之前,我想先了解一下 Groovy 如何“找到”其他类。如果我在 Eclipse 中运行这个项目,并且包含所有这些 groovy 脚本的整个项目目录都在类路径中,那么所有 groovy 脚本应该能够“找到”彼此吗?

还是有其他想法?

【问题讨论】:

  • 我们可能需要查看您用来执行 groovy 的代码

标签: java groovy


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    • 1970-01-01
    • 2020-03-30
    • 1970-01-01
    相关资源
    最近更新 更多