GroovyShellを使用してJavaアプリ内のGroovyスクリプトを評価しようとしています。
問題:プログラムは正常にコンパイルされますが、実行時にNoClassDefFoundErrorが発生します。
TestClass.java:
import groovy.lang.Binding;
import groovy.lang.GroovyShell;
class TestClass {
static Binding binding;
static GroovyShell shell;
public static void main(String[] args) {
System.out.println("Hello, world.");
binding = new Binding();
shell = new GroovyShell(binding);
Object value = shell.evaluate("5 ** 5");
}
}
次に、次のコマンドでコンパイルします。
> javac -cp%GROOVY_HOME%\ embeddable \ groovy-all-2.1.1.jar TestClass.Java
> jar cfm TestClass.jar Manifest.txt TestClass.class
エラーなしでコンパイルされます。それから私はそれを実行します:
> java -jar TestClass.jar
Hello, world
Exception in thread "main" java.lang.NoClassDefFoundError: groovy/lang/Binding
at TestClass.main(TestClass.java:10)
Caused by: java.lang.ClassNotFoundException: groovy.lang.Binding
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
完全なエラーテキスト:http://puu.sh/2gOrx
コンパイルしたときと同じ-cpで実行しようとしましたが、同じエラーが発生します。