ClassNotFoundException even though the jar containing the class is properly present in the classpath
12,898
If your project is Faceted
, right click on the project and go to Properties
, and choose Deployment Assembly
on the left pane. Check if the dependencies exists there as Build Path
entries or Archives
(jars). Once this is done you may do Project
>Clean
and restart the server.
Related videos on Youtube
Author by
blaiso
Updated on June 04, 2022Comments
-
blaiso almost 2 years
I'm configuring a new project in eclipse. my project has many modules including one of them named eas.core. to the buildPath of my eas.core module, i have added a jar file common.jcr.jar containing a class named
ContentRepositorySettings
, that I'm using into my codes. but on runtime, I'm still getting aClassNotFoundException
as shown belowjava.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)
-
T.J. Crowder over 8 yearsWhen saying "it's correctly in my classpath" it's important to actually show your classpath. Copy and paste it, ideally, so that typos are preserved.
-
Andreas Veithen over 8 yearsYes, and i would add that it is not actually the classpath in Eclipse that is important, but the content of the WAR file.
-
Abhiram mishra over 8 yearsCheck if your War file,look into the web-inf/lib folder inside , if you don't find this jar then you would get this error. If you are directly deploying then you would not be able to see the war. Then the best option would be to export it as a war file and check.
-
Abhiram mishra over 8 yearsNote:Having the class path configured properly in eclipse does not necessarily mean it is available to the web app you are deploying. It means that you could build the app with out compilation error. Having the right project nature ( like dynamic web app) ,eclipse ensures your given jars are copied into the war 's WEB-INF/lib folder which makes it available to the web app at the runtime.
-
-
blaiso over 8 yearsok, i followed your instructions and it works properly. thanks James