如何在unix-ERROR中执行groovy jar

use*_*913 3 unix groovy

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

groovy -cp /tmp/HelloWorld.jar hello.helloWorld
Run Code Online (Sandbox Code Playgroud)

但得到以下错误: -

Caught: java.io.FileNotFoundException: /tmp/hello.helloWorld (/tmp/hello.helloWorld)
java.io.FileNotFoundException: /tmp/hello.helloWorld (/tmp/hello.helloWorld)
Run Code Online (Sandbox Code Playgroud)

jam*_*man 5

除非包含静态方法,否则类只是一个声明.

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

HelloWorld.groovy

package hello
class HelloWorld {
    def main() { println "Hello World!" }
}
Run Code Online (Sandbox Code Playgroud)

编译和jar:

groovyc HelloWorld.groovy
jar -cf HelloWorld.jar hello
Run Code Online (Sandbox Code Playgroud)

执行:

groovy -cp HelloWorld.jar -e 'new hello.HelloWorld().main()'
Run Code Online (Sandbox Code Playgroud)

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

HelloWorld.groovy

package hello
class HelloWorld {
    static main() { println "Hello World!" }
}
Run Code Online (Sandbox Code Playgroud)

编译和jar:

groovyc HelloWorld.groovy
jar -cf HelloWorld.jar hello
Run Code Online (Sandbox Code Playgroud)

执行:

groovy -cp HelloWorld.jar -e 'hello.HelloWorld.main()'
Run Code Online (Sandbox Code Playgroud)

  • 我不得不在cmd.exe中使用双引号http://stackoverflow.com/questions/17078537/groovy-whats-wrong-with-this-hello-world-program (2认同)