Exception in thread "main" java.lang.NoClassDefFoundError: org/javatuples/Unit

Exception in thread "main" java.lang.NoClassDefFoundError: org/javatuples/Unit

我已经在 Eclipse 项目中导入了 javatuples-1.2.jar。我这样做是为了 运行 Java 元组单元 class 程序。以下是代码:

 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); 
   } 
 } 

但是,在 运行ning 上出现以下错误:

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

在references下,很容易看到tuples jar文件添加成功。但是下面是工程目录,引用中的jar,报错,以及Eclipse中的整个程序。

如何解决这个问题并运行 Java 元组程序正确?

右键单击 javatuples-1。2.jar > 构建路径 > 添加到构建路径。

NoClassDefFoundError 是 Java 运行时系统尝试加载 class 的定义时抛出的错误,并且 class 定义不再可用。

欢迎评论。

您有 java 11 个...

当我(尝试)重现您的设置时:

  1. 我的eclipse(版本:2018-12(4.10.0),Win_64_jdk_11.0.2)问我“模块名称”并在创建后添加src/module-info.java “Java 项目”,...然后下载并添加 lib/javatuples-1.2.jar 到构建路径。

  2. 当我 尝试 use/import 它在我的代码中时 (main class) - 编译错误,并自动更正建议我将“java元组”模块添加到模块信息:

咔哒声:

myproject/src/module-info.java

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

所以,eclipse 警告已经有点讨厌了:javatuples 是“正确的”模块名称。

希望对您有所帮助。