我正在尝试使用 GroovyShell 在 Java 应用程序中评估 Groovy 脚本。
问题:我的程序编译正常,但在运行时给了我一个 NoClassDefFoundError。
测试类.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 运行它,但它给了我同样的错误。