Невозможно запустить код из-за 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.
Увидеть:
log4j-1.2.17.jar
реализует log4j версии 1 и его довольно старый. Что вам нужно, так это реализация log4j 2 - добавьте это как зависимость: ссылка