Невозможно запустить код из-за java.lang.NoClassDefFoundError

Я изучаю библиотеку jsprit. Для этого я просто создал новый проект в Eclipse и скопировал и скопировал демонстрационный пример класса. Затем я добавил все баночки на путь, в том числе log4j-1.2.17.jar, Тем не менее, я не могу выполнить демонстрационный код из-за следующей ошибки:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/log4j/LogManager
    at jsprit.core.problem.vehicle.VehicleImpl$Builder.<clinit>(VehicleImpl.java:108)
    at com.test.jsprit.main(jsprit.java:49)
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.LogManager
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 2 more

Что это на самом деле означает и как решить эту проблему? Означает ли это, что пропущен какой-то другой файл *.jar?

ОБНОВИТЬ:

Ошибка возникает в следующей строке:

Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle");

2 ответа

Решение

Вы используете неправильную версию библиотеки log4j. Вам нужна версия 2.x.

Увидеть:

LogManager (версия 1.x)

LogManager (версия 2.x)

log4j-1.2.17.jar реализует log4j версии 1 и его довольно старый. Что вам нужно, так это реализация log4j 2 - добавьте это как зависимость: ссылка

Другие вопросы по тегам