2013-03-27 32 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/