What is difference between ClassNotFoundException and NoClassDefFoundError?

What is difference between ClassNotFoundException and NoClassDefFoundError?

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 more difficult to debug and find the reason. 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 Out
{
}
public class In
{
   public static void main(String[] args)
   {
        Out = new Out();    
    }
}
 
Now after compiling both the classes , if you delete Out.class file , and run Test class , it will throw
Exception in thread "main" java.lang.NoClassDefFoundError:

Read More →