gpt4 book ai didi

java - NoClassDefFoundError : groovy/lang/binding

转载 作者:搜寻专家 更新时间:2023-11-01 03:08:10 26 4
gpt4 key购买 nike

我正在尝试使用 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 运行它,但它给了我同样的错误。

最佳答案

全局类路径,例如 CLASSPATH 环境和“-cp”选项,如果您运行的是可执行 JAR,则不会生效。详情请引用此贴:Does java -jar option alter classpath options .

java - the Java application launcher document

When you use this option, the JAR file is the source of all user classes, and other user class path settings are ignored.

相反,您需要在 list 文件中设置类路径。检查以下示例。

文件结构

|-- Manifest.txt
|-- TestClass.class
|-- TestClass.jar
|-- TestClass.java
`-- lib
`-- groovy-all-2.1.1.jar

Manifest.txt(不要忘记在最后一行添加一个新行结尾)

Main-Class: TestClass
Class-Path: lib/groovy-all-2.1.1.jar

并在您的问题中执行相同的命令以生成并运行可执行 JAR。有关详细信息,请查看此维基页面:Setting the path in a Manifest file .

关于java - NoClassDefFoundError : groovy/lang/binding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15399522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com