2013-03-27 92 views
2

MyClass.groovy有在Groovy脚本中使用当前目录中的一类不

def static a(){ ... } 

MyScript.groovy使用MyClass的,如:

x = MyClass.a() 

此工作正常,如果MyClass.groovy是在同一目录为MyScript.groovy。如果我把MyClass.groovy放入〜/ .groovy/lib或者CLASSPATH的另一个目录中,它就不起作用。如果Groovy不在当前目录中,还有什么方法可以告诉Groovy在哪里找到MyClass.groovy?

回答

1

使用groovy中的命令行,我们自动使用GroovyClassLoader,它能够实时编译脚本。

如果在类路径文件夹中有MyClass.groovyMyScript.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/ 
相关问题