我已将Eclipse项目中的javatuples-1.2.jar导入。我这样做是为了运行Java Tuples Unit类程序。以下是代码:
package mynewpackage;
import org.javatuples.Unit;
class Mynewclass2 {
public static void main(String[] args)
{
Unit<String> u
= new Unit<String>("This is demo text!");
System.out.println(u);
}
}
但是,在运行时出现以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/javatuples/Unit
at mynewpackage.Mynewclass2.main(Mynewclass2.java:9)
Caused by: java.lang.ClassNotFoundException: org.javatuples.Unit
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 1 more
在参考下,我可以轻松地看到tuples jar文件已成功添加。但是,以下是项目目录,引用中的jar,错误以及Eclipse中的整个程序。
如何解决此问题并正确运行Java Tuples程序?
答案 0 :(得分:1)
右键单击javatuples-1.2.jar>构建路径>添加到构建路径。
NoClassDefFoundError 是当Java Runtime System尝试加载类的定义并且该类定义不再可用时引发的错误。
欢迎发表评论。
答案 1 :(得分:1)
当我(尝试)复制您的设置时:
我的日食(版本:2018-12(4.10.0),Win_64_jdk_11.0.2)要求我提供“模块名称”,并在创建“ Java项目”后添加src/module-info.java
,...然后下载并添加lib/javatuples-1.2.jar
来构建路径。
当我尝试在我的代码(主类)中使用/导入它时-编译错误,并且自动更正建议我向模块信息中添加“ javatuples”模块:< / p>
click-clack:
module myproject {
requires javatuples;
}
此后该程序已经可以运行,但是 Eclipse警告:
Name of automatic module 'javatuples' is unstable, it is derived from the module's file name.
要修复,您可以运行(从命令行):
myproject>jar --file=lib/javatuples-1.2.jar --describe-module
No module descriptor found. Derived automatic module.
javatuples@1.2 automatic
requires java.base mandated
contains org.javatuples
contains org.javatuples.valueintf
因此,日食警告已经很讨厌了: javatuples 是“正确的”模块名称。
希望有帮助。