java - 线程 "main"java.lang.NoClassDefFoundError : org/javatuples/Unit 中出现异常

标签 java eclipse jar tuples executable-jar

我已经在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

在引用下,我可以很容易地看到元组 jar 文件已成功添加。不过,下面是项目目录、引用中的jar、错误以及Eclipse中的整个程序。

Eclipse Project Directory with Java Tuples

如何解决该问题并正确运行 Java Tuples 程序?

最佳答案

您已经安装了 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. 当我尝试在我的代码(主类)中使用/导入它时 - 编译错误,并且自动更正建议我将“javatuples”模块添加到模块信息中:

咔哒声:

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 是“正确的”模块名称。

希望有帮助。

关于java - 线程 "main"java.lang.NoClassDefFoundError : org/javatuples/Unit 中出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54610155/

相关文章:

java - FilterChain 抛出 javax.servlet.ServletException : IteratedExpression. getItem:索引超出范围

eclipse - 如何让 Eclipse 忽略 WSDL 文件中的错误?

eclipse - 无法在 eclipse(Luna) 中创建 Maven 项目

eclipse - 如何让自定义任务标签在 Eclipse 中工作?

java - 通过命令行从 Jar 运行 Java 类

java - 打印内存地址而不是字符串值

java - 如何从 Activity 中隐藏 Fragment - Android Studio

java - 将 Tomcat 从 8.0 迁移到 8.5,客户端证书身份验证不起作用

java - JSP 中的 Jar 文件未正确加载

gradle - 如何在gradle中仅使用基于文件的依赖项,而不是指定groupId:artifactId:versionId