4

我有一个在 eclipse 中开发的 groovy 项目,其中有一个包(hello)和一个 groovy 类(helloWorld.groovy)。我已经导出了 jar(说 HelloWorld.jar)。我正在尝试通过以下方式在 unix 中执行此 jar:-

groovy -cp /tmp/HelloWorld.jar hello.helloWorld

但得到以下错误: -

Caught: java.io.FileNotFoundException: /tmp/hello.helloWorld (/tmp/hello.helloWorld)
java.io.FileNotFoundException: /tmp/hello.helloWorld (/tmp/hello.helloWorld)
4

2 回答 2

6

一个类只是一个声明,除非它包含静态方法。

您可以创建类的实例并从命令行脚本调用方法。

HelloWorld.groovy

package hello
class HelloWorld {
    def main() { println "Hello World!" }
}

编译和jar:

groovyc HelloWorld.groovy
jar -cf HelloWorld.jar hello

执行:

groovy -cp HelloWorld.jar -e 'new hello.HelloWorld().main()'

您可以在不创建类实例的情况下调用静态方法:

HelloWorld.groovy

package hello
class HelloWorld {
    static main() { println "Hello World!" }
}

编译和jar:

groovyc HelloWorld.groovy
jar -cf HelloWorld.jar hello

执行:

groovy -cp HelloWorld.jar -e 'hello.HelloWorld.main()'
于 2013-09-19T20:31:30.603 回答
0

groovy 命令通常用于一步编译和运行 groovy 文件。命令行参数是一个脚本文件,而不是类名。

如果您的 groovy 脚本已编译为class文件,请使用 Java 运行它。例如:

java -cp /tmp/HelloWorld.jar:$GROOVY_HOME/embeddable/groovy-all-2.1.7.jar hello.helloWorld
于 2013-09-19T20:07:45.927 回答