2012-09-12 59 views
8

我找到了一個在沒有使用groovy-all jar文件安裝Groovy的系統上運行Groovy腳本的例子。我嘗試以下操作:使用groovy-all jar運行Groovy腳本時,如何指定類路徑?

java -cp src:.:lib/* -jar lib/groovy-all-2.0.1.jar src/com/example/MyScript.groovy 

麻煩的是我的腳本取決於放在src/COM /例子lib目錄罐子加上其他兩個Groovy腳本文件。當我運行它時,它會抱怨所有這些導入語句。我已經安裝了Groovy中通過使用精細的系統上運行了以下:

CLASSPATH="src:.:lib/*" groovy src/com/example/MyScript.groovy 

如何運行Groovy腳本這種方式,使用Groovy的所有jar,以及給它一個類路徑?

回答

18

您不能在命令中組合-jar-cp命令,因此您需要明確命名主類。縱觀groovy-all JAR的清單,主類名是groovy.ui.GroovyMain,所以你需要

java -cp 'src:.:lib/*' groovy.ui.GroovyMain src/com/example/MyScript.groovy 

(如果Groovy的一切不是已經被lib/*覆蓋你需要將它添加到-cp爲好)。

1

一種方法是將Groovy文件編譯爲「* .class」文件。然後在$ GROOVY_HOME/embeddable目錄中包含jar,並將其放在classpath中。

這裏是一個最低限度的例子(第一行是一個簡單的Unix複印件;隨便用你的作品):

$ cp /some-dir/groovy-1.8.5/embeddable/* . 
$ groovyc Test.groovy 
$ java -cp . groovy-all-1.8.5.jar Test 

對於典型的分佈,你會使用Ant/Maven的/搖籃建立你自己的jar文件中包含編譯好的Groovy(即類文件)。