1

我对 groovy 很陌生,我正在尝试 Groovy in Action 书中的这个例子。我有这个 fibonacci.groovy 程序,当尝试使用 java 命令运行该程序时,我收到 NoClassDefFound 错误。

我在控制台中使用的命令是:

java -cp %GROOVY_HOME%/embeddable/groovy-all-2.2.0.jar;classes fibonacci

如您所见,我在类路径中提到了 groovy-all jar,并设置了 GROOVY_HOME 变量。未设置类路径变量,因此我假设它具有默认的“。” 在当前文件夹本身中查找的值。我究竟做错了什么?

4

1 回答 1

1

您是否缺少类路径中的当前文件夹?

我在 Linux 上,但是如果我用 编译一个 Groovy 类,groovyc然后尝试用它运行它java,我需要告诉 java 我在哪里groovy-all.jar,并将当前目录添加到类路径中

所以,这个编译工作:

$ groovyc Fib.groovy

但是这个运行没有运行:

$ java -cp $GROOVY_HOME/embeddable/groovy-all-2.2.0.jar:classes Fib

因为它缺少路径中的当前目录:

$ java -cp $GROOVY_HOME/embeddable/groovy-all-2.2.0.jar:. Fib
test for fib

另请注意,如果fibonacci在包中,则需要键入类的完整路径。所以对于这个时髦的来源:

package up.foo
println "test for fib"

编译:

$ groovyc Fib.groovy

我们编写完整的包路径来执行:

$ java -cp $GROOVY_HOME/embeddable/groovy-all-2.2.0.jar:. up.foo.Fib

它是:

test for fib
于 2013-11-23T12:03:37.853 回答