Исключение в потоке "main" java.lang.NoClassDefFoundError: org / javatuples / Unit - PullRequest
0 голосов
/ 09 февраля 2019

Я импортировал javatuples-1.2.jar в проект Eclipse.Я сделал это, чтобы запустить программу класса 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?

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

У вас есть Java 11 на месте ...

Когда я (пытаюсь) воспроизвести ваши настройки:

  1. Мое затмение (Версия: 2018-12 (4.10).0), Win_64_jdk_11.0.2) запрашивает у меня «имя модуля» и добавляет src/module-info.java после создания «Проекта Java», ... затем загружает и добавляет lib/javatuples-1.2.jar к пути сборки.

  2. Когда я пытаюсь использовать / импортировать его в моем коде (основной класс) - ошибка компиляции, и автокоррекция предлагает мне добавить модуль "javatuples" в module-info:

click-clack:

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

Итак, предупреждение о затмении уже своего родапротивный: javatuples - это "правильное" имя модуля.

Надеюсь, это поможет.

0 голосов
/ 10 февраля 2019

Щелкните правой кнопкой мыши javatuples-1.2.jar> Путь сборки> Добавить в путь сборки.

NoClassDefFoundError - это ошибка, которая выдается, когда Java Runtime System пытается загрузить определениекласс, и это определение класса больше не доступно.

Комментарии приветствуются.

...