top button
Flag Notify
    Connect to us
      Site Registration

Site Registration

ClassNotFoundException vs NoClassDefFoundError in java?

+1 vote
211 views

What is the difference between ClassNotFoundException and NoClassDefFoundError in java?

posted Oct 1, 2013 by anonymous

Share this question
Facebook Share Button Twitter Share Button LinkedIn Share Button

1 Answer

+1 vote

ClassNotFoundException : ClassNotFoundException occurs when class loader could not find the required class in class path . So , basically you should check your class path and add the class in the classpath.

NoClassDefFoundError : This is thrown when at compile time the required classes are present , but at run time the classes are changed or removed or class's static initializes threw exceptions. It means the class which is getting loaded is present in classpath , but one of the classes which are required by this class , are either removed or failed to load by compiler .So you should see the classes which are dependent on this class .

Example :
public class Test1
{
}


public class Test 

{
   public static void main(String[] args)

   {
        Test1 = new Test1();    
    }

}

Now after compiling both the classes , if you delete Test1.class file , and run Test class , it will throw

Exception in thread "main" java.lang.NoClassDefFoundError: Test
        at Test1.main(Test1.java:5)
Caused by: java.lang.ClassNotFoundException: Test
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 1 more 
answer Oct 1, 2013 by Salil Agrawal
...