我对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变量。 classpath变量没有设置,所以我假设它有默认的'。'要在当前文件夹中查找的值。我做错了什么?
答案 0 :(得分:1)
您是否错过了类路径中的当前文件夹?
我在Linux上,但如果我使用groovyc
编译Groovy类然后尝试使用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
,则需要键入该类的完整路径。所以对于这个groovy来源:
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