我有一个包含多个groovy文件的项目,我有几个"小"类,我想放在一个文件中.
基本上,这就是我想要的:
Foo.groovy:
class Foo
{
Foo() { println "Foo" }
}
Run Code Online (Sandbox Code Playgroud)
Bar.groovy:
class Bar
{
Bar() { println "Bar" }
}
class Baz
{
Baz() { println "Baz" }
}
Run Code Online (Sandbox Code Playgroud)
script.groovy:
#!/groovy/current/bin/groovy
new Foo()
new Bar()
new Baz()
Run Code Online (Sandbox Code Playgroud)
然后:
$ 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
Run Code Online (Sandbox Code Playgroud)
任何的想法?
当Groovy作为没有编译的脚本运行时,通过将名称与相应的*.groovy源文件匹配来解析类,因此只能找到类名与源文件名匹配的类.
这是标记为非Bug的已知问题.
作为一种解决方法,您可以先编译类groovyc,然后使用java以下命令运行:
groovyc *
java -cp '/some/path/groovy-2.4.3/lib/groovy-2.4.3.jar;.' script
Foo
Bar
Baz
Run Code Online (Sandbox Code Playgroud)