由于 java.lang.NoClassDefFoundError,无法 运行 代码

Cannot run the code due to java.lang.NoClassDefFoundError

我正在调查 jsprit library. For this I just created a new project in Eclipse and copied-pasted the demo example class。然后我将所有 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 库版本错误。您需要 2.x 版本。

参见:

LogManager (Version 1.x)

LogManager (Version 2.x)

log4j-1.2.17.jar 实现了 log4j 版本 1 并且它已经很老了。您需要的是 log4j 2 的实现-将其添加为依赖项:link