【发布时间】:2015-12-23 14:54:49
【问题描述】:
我正在 Eclipse 中配置一个新项目。我的项目有许多模块,其中一个名为 eas.core。
在我的 eas.core 模块的 buildPath 中,我添加了一个 jar 文件 common.jcr.jar,其中包含一个名为 ContentRepositorySettings 的类,我正在将其用于我的代码中。但在运行时,我仍然收到ClassNotFoundException,如下所示
java.lang.NoClassDefFoundError: cm/bao/common/jcr/ContentRepositorySettings
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2944)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1208)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1688)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)
at cm.bao.eas.core.ElectronicArchivingApplicationImpl.setupGlobalSettings(ElectronicArchivingApplicationImpl.java:33)
at cm.bao.eas.core.ElectronicArchivingApplicationImpl.start(ElectronicArchivingApplicationImpl.java:49)
at cm.bao.eas.ui.gwt.server.listner.ElectronicArchivingContextListner.contextInitialized(ElectronicArchivingContextListner.java:18)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4973)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: cm.bao.common.jcr.ContentRepositorySettings
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1718)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)
【问题讨论】:
-
当说“它在我的类路径中是正确的”时,实际显示你的类路径很重要。理想情况下,复制并粘贴它,以便保留拼写错误。
-
是的,我要补充一点,实际上重要的不是 Eclipse 中的类路径,而是 WAR 文件的内容。
-
您似乎有重复副本
-
检查你的War文件,查看里面的web-inf/lib文件夹,如果你没有找到这个jar,那么你会得到这个错误。如果您直接部署,那么您将无法看到战争。那么最好的选择是将其导出为war文件并检查。
-
注意:在 Eclipse 中正确配置类路径并不一定意味着它对您正在部署的 Web 应用程序可用。这意味着您可以在没有编译错误的情况下构建应用程序。拥有正确的项目性质(如动态 web 应用程序),eclipse 确保您给定的 jar 被复制到 war 的 WEB-INF/lib 文件夹中,使其在运行时可供 web 应用程序使用。
标签: java eclipse exception classloader classnotfoundexception