我正在研究jsprit库。为此,我刚刚在Eclipse中创建了一个新项目,并复制粘贴了演示示例类。然后,我将所有jar添加到路径中,包括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");
您使用了错误版本的log4j-lib。你需要2.x版本。
参见:
LogManager(1.x版)
LogManager(版本2.x)
log4j-1.2.17.jar
实现了log4j版本1及其相当古老的版本。您需要的是log4j2的实现-将其添加为依赖项:link