2

MyClass.groovy 有

def static a(){ ... }

MyScript.groovy 使用 MyClass,例如:

x = MyClass.a()

如果 MyClass.groovy 与 MyScript.groovy 位于同一目录中,则此方法可以正常工作。如果我将 MyClass.groovy 放在 ~/.groovy/lib 或其他属于 CLASSPATH 的目录中,则它不起作用。如果 MyClass.groovy 不在当前目录中,是否有另一种方法告诉 Groovy 在哪里可以找到它?

4

1 回答 1

1

使用命令行,groovy我们会自动使用 a GroovyClassLoader,它能够即时编译脚本。

如果您有MyClass.groovy并且MyScript.groovy在类路径文件夹中并且它们尚未编译,GroovyClassLoader则将自动编译它们。由于当前目录是类路径的一部分,因此当您在当前目录中有两个文件时,它就可以工作。

因此,只要两个文件都包含在类路径中,它就应该可以工作。

关于./groovy/lib,如果您在其中放置一个.jar包含MyClass.classMyClass.groovy文件的文件,则可以使其工作。GROOVY_HOME/conf/groovy-starter.conf控制加载的内容:

# load required librarieS
load !{groovy.home}/lib/*.jar

# load user specific libraries
load !{user.home}/.groovy/lib/*.jar

# tools.jar for ant tasks
load ${tools.jar}

因此,您可以编辑此配置以添加一个路径,您可以在其中放置您想要自动加载的脚本。例如,

# test
load !{user.home}/.groovy/myscripts/
于 2013-03-28T09:48:18.200 回答