当作为脚本运行时,一个文件中有多个Groovy类

jhiyze9q  于 5个月前  发布在  其他
关注(0)|答案(2)|浏览(46)

我有一个包含多个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


你知道吗?

z9smfwbn

z9smfwbn1#

当Groovy作为脚本运行而不编译时,类通过将名称匹配到相应的*.groovy源文件来解析,因此只能找到类名与源文件名匹配的类。
这是known problem标记为不是一个错误。
作为一种解决方法,您可以先使用groovyc编译类,然后使用java运行:

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

字符串

crcmnpdw

crcmnpdw2#

好吧,你还没有真正解释为什么你想这样做,所以也许明显的答案不会帮助你,但你可以这样做:

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

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

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

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

字符串

相关问题