【发布时间】:2013-03-02 05:26:10
【问题描述】:
我正在尝试使用 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 来运行它,但它给了我同样的错误。
【问题讨论】:
-
你可以试试“java -cp TestClass.jar;%GROOVY_HOME%\embeddable\groovy-2.1.1.jar TestClass”吗?
-
同样的错误。 puu.sh/2hlYG
-
%GROOVY_HOME%\embeddable\groovy-2.1.1.jar 是否存在?在我这边,它是 groovy-all-2.1.1.jar。
-
哦,我实际上应该使用 groovy-all-2.1.1.jar。不过我在帖子里打错了。 puu.sh/2hn9E