由于 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 版本。
参见:
log4j-1.2.17.jar
实现了 log4j 版本 1 并且它已经很老了。您需要的是 log4j 2 的实现-将其添加为依赖项:link
我正在调查 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 版本。
参见:
log4j-1.2.17.jar
实现了 log4j 版本 1 并且它已经很老了。您需要的是 log4j 2 的实现-将其添加为依赖项:link