2014-10-20 104 views
1

說我有兩個Groovy的文件的文件夾:導入實用程序到Groovy腳本

Main.groovy 
Utils.groovy 

我在Utils.groovy文件中的一些方法,我想在Main.groovy使用,只要這樣我就可以在以後重新使用它們其他Groovy腳本。所以,我在Main.groovy嘗試這樣做:

import Utils 

這似乎是工作在當前工作文件夾是一個在腳本所在。然而,這並沒有工作,如果我cd -ed到其他地方,並顯示錯誤消息:

unable to resolve class Utils 

任何方式對文件相對於腳本文件夾,而不是當前工作文件夾導入?我知道我可以提供-cp或者做其他事情,比如使用真正的構建工具,但想法是能夠運行這些工具。

+0

你是如何運行'Main.groovy'? – 2014-10-20 20:24:03

+0

@tim_yates只是'常規Main.groovy'。 – 2014-10-20 20:42:25

+0

你可以用一個bash腳本運行它,爲'-cp'設置正確的路徑?這是Windows還是Linux? – 2014-10-20 20:44:52

回答

1

如果你有兩個文件在同一個目錄中,你不需要導入任何東西。看看這個例子。我在/tmp目錄中創建了2個文件:Utils.groovy和Main.groovy。在Utils.groovy你可以找到:

class Utils { 
    def foo() { 
     return 2 
    } 
} 

在Main.groovy你可以找到:

Utils utils = new Utils() 
println utils.foo() 

所有我做的是:groovyc Main.groovy然後groovy Main。輸出是:

[email protected] : /tmp 
[1] % groovy Main 
2 

然後從你目前在任何目錄下運行,運行:

[email protected] : /usr 
[1] % groovy -cp /tmp /tmp/Main 
2 
+1

這是真的 - 沒有想到這一點! +1提醒我。但正如我所說,cwd與腳本文件夾不同。對於你的例子,嘗試做一個'cd/usr',然後'groovy/tmp/Main.groovy'。 – 2014-10-20 21:31:23

+0

@SzymonStepniak OP已經知道:*我知道我可以提供-cp或者做其他事情,比如使用真正的構建工具,但想法是能夠運行這些。* – Opal 2014-10-21 05:15:56

+0

哦,錯過了那個,thx。那麼我沒有看到任何問題。或者我想再次錯過什麼? :) – 2014-10-21 06:04:53