Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在unix中执行groovy jar-错误_Unix_Groovy - Fatal编程技术网

如何在unix中执行groovy jar-错误

如何在unix中执行groovy jar-错误,unix,groovy,Unix,Groovy,我有一个在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/hel

我有一个在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)

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

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

java -cp /tmp/HelloWorld.jar:$GROOVY_HOME/embeddable/groovy-all-2.1.7.jar hello.helloWorld

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

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

HelloWorld.groovy

package hello
class HelloWorld {
    def main() { println "Hello World!" }
}
package hello
class HelloWorld {
    static main() { println "Hello World!" }
}
编译并安装jar:

groovyc HelloWorld.groovy
jar -cf HelloWorld.jar hello
groovyc HelloWorld.groovy
jar -cf HelloWorld.jar hello
执行:

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

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

HelloWorld.groovy

package hello
class HelloWorld {
    def main() { println "Hello World!" }
}
package hello
class HelloWorld {
    static main() { println "Hello World!" }
}
编译并安装jar:

groovyc HelloWorld.groovy
jar -cf HelloWorld.jar hello
groovyc HelloWorld.groovy
jar -cf HelloWorld.jar hello
执行:

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

@奥利·查尔斯沃思——在你提供的链接中,我没有发现任何与我的问题相关的东西。请发布你的课程。没有它,我们就只能在空中射击dark@tim_yates:我认为这更重要的是,对于
groovy
…执行的CLI语法不正确:java-cp/tmp/HelloWorld.jar:$groovy\u HOME/embeddeble/groovy-all-2.1.7.jar hello.HelloWorld获取错误:-线程“main”中出现异常java.lang.NoClassDefFoundError:java.lang.ClassLoader.defineClass1(本机方法)处的groovy/lang/GroovyObject。。。。。。。找不到主类:hello.helloWorld。程序将退出。HelloWorld.jar清单版本:1.0主类:hello.HelloWorld中包含META-INF\MANIFEST.MT的内容$GROOVY\u HOME/embeddeble/GROOVY-all-2.1.7.jar是否存在?该文件必须存在。确保设置了GROOVY_HOME环境变量,并根据需要调整版本号。这是在windows上工作的:
java-cp“Hello.jar;%GROOVY_HOME%\embeddeble\GROOVY-all-2.4.4.jar”Hello.Hello
GROOVY-cp HelloWorld.jar-e'new Hello.HelloWorld().main()'org.codehaus.groovy.control.multiplecompilentErrorSexception:启动失败:来自命令行的脚本\u:1:应为“”,在第1行第5列找到“”新^I必须在cmd.exe中使用双引号