NoClassDefFoundError与ClassNotFoundException的区别
NoClassDefFoundError
编译通过,但运行时,类加载器找不到对应的类。
对应代码:
package com.cgi.tools.java;
public class ClassA {
private ClassB instanceB = null;
private ClassC instanceC = null;
public ClassA() {
instanceB = new ClassB();
//运行时类加载器加载不到ClassC,抛出NoClassDefFoundError
instanceC = new ClassC();
}
}
ClassNotFoundException
通过全类名加载类,而类加载器找不到指定的类时,抛出ClassNotFoundException。
有3个方法可能抛出该异常:
- Class.forName
- ClassLoader.findSystemClass
- ClassLoader.loadClass
示例:
package otaku.classload;
public class ClassNotFound {
public static void main(String[] args) throws ClassNotFoundException {
Class.forName("class.not.found.NotFound");
}
}