目录
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运行时系统抛出 |