我想通过使用GroovyShell来评估Java应用程序内的Groovy脚本。NoClassDefFoundError:groovy/lang/binding
问题:我的程序编译正常,但在运行时给我一个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运行它,但它给了我同样的错误。
你可以试试“java -cp TestClass.jar;%GROOVY_HOME%\ embeddable \ groovy-2.1.1.jar TestClass”? – longhua 2013-03-14 01:50:46
同样的错误。 http://puu.sh/2hlYG – Terran 2013-03-14 02:59:33
%GROOVY_HOME%\ embeddable \ groovy-2.1.1.jar是否存在?在我身边,它是groovy-all-2.1.1.jar。 – longhua 2013-03-14 03:15:08