这二者有什么区别?求解

解决方案 »

  1.   

    ClassNotFoundException是指在运行时动态加载类时找不到类定义时抛出的异常,因为无法确定类在classpath中是否存在该类,所以用exception来定义这种不正常的状态。而java中能动态加载类只能通过Class.forName()以及classloader的相关方法来根据一个类字符串名加载,所以此异常大多由Class.forName()引发。NoClassDefFoundError同样指加载类时找不到类定义,不同的是,他是在编译时检查,当JDK编译一个.java文件时,会将Java类中所有引用的class加载进来,并且在加载其他class时进行同样的操作,直到将这一系列类加载进JVM。
    在这个过程中,如果遇到加载的类不存在时,抛出此错误。