簡體   English   中英

作為腳本運行時,在一個文件中有多個Groovy類

[英]Multiple Groovy classes in one file when running as a script

我有一個包含多個groovy文件的項目,我有幾個“小”類,我想放在一個文件中。

基本上,這就是我想要的:

Foo.groovy:

class Foo
{
    Foo() { println "Foo" }
}

Bar.groovy:

class Bar
{
    Bar() { println "Bar" }
}

class Baz
{
    Baz() { println "Baz" }
}

script.groovy:

#!/groovy/current/bin/groovy

new Foo()
new Bar()
new Baz()

然后:

$ groovy ./script.groovy 
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
/home/tmp/script.groovy: 5: unable to resolve class Baz 
 @ line 5, column 1.
   new Baz()
   ^

1 error

任何的想法?

當Groovy作為沒有編譯的腳本運行時,通過將名稱匹配到相應的*.groovy源文件來解析類,因此只能找到類名與源文件名匹配的類。

這是標記為非Bug的已知問題

作為一種解決方法,您可以先使用groovyc編譯類,然后使用java運行:

groovyc *
java -cp '/some/path/groovy-2.4.3/lib/groovy-2.4.3.jar;.' script
Foo
Bar
Baz

好吧,你還沒有真正解釋為什么你會想要這樣做,所以也許明顯的答案對你沒有幫助,但你可以這樣做:

#! env groovy
class Foo
{
Foo() { println "Foo" }
}

class Bar
{
Bar() { println "Bar" }
}

class Baz
{
Baz() { println "Baz" }
}

new Foo()
new Bar()
new Baz()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM