目录

ClassNotFoundException和NoClassDefFoundError都发生在指定的类没有在运行时发现

然而,他们发生在不同的情境 ClassNotFouindExecption发生在当你尝试使用Class.forNmae() or loadClass()在运行期时加载一个类,但那个提及的累没有在classPath发现时

NotClassFoundException是一个错误,发现在指定的类在编译期存在,而在运行期不存在

比如对于ClassNotFoundException,你利用Class.forName(“oracle.jdbc.driver.OracleDriver”)但提及的类没有在类路径下发现就会抛出

class A
{
  // some code
}
public class B
{
    public static void main(String[] args)
    {
        A a = new A();
    }
}

NotClassDefFoundError则是 当你删除A.class 而运行B.class 就会抛出NoClassDefFoundError

小结

ClassNotFoundException NoClassDefFoundError
异常 lang.Exception 错误 lang.Error
应用尝试在运行时加载类,但没有在classpath进行更新 java运行时系统没有找到类的定义
应用本身进行抛出 java运行时系统抛出