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 に答える