java.lang.ClassNotFoundException与java.lang.NoClassDefFoundError的区别
2016-03-24 14:20
567 查看
1,java.lang.ClassNotFoundException
ClassNotFoundException这个错误,比较常见也好理解。原因:就是找不到指定的class。
常见的场景就是:
1 调用class的forName方法时,找不到指定的类
2 ClassLoader 中的 findSystemClass() 方法时,找不到指定的类
3 ClassLoader 中的 loadClass() 方法时,找不到指定的类
2,java.lang.NoClassDefFoundError
这个就比较奇葩了,查找其他的资料是说,通过了编译,但是使用的时候,比如new的时候会出错。通过查找资料,搜集到如下的场景:
1 类依赖的class或者jar包*不存在;
2 类文件存在,但是存在不同的域中,即在其他的包中,在当前包中不存在;
3 大小写问题,javac编译的时候是无视大小的,很有可能你编译出来的class文件就与想要的不一样!这个没有做验证。
小结
总结来说:1,ClassNotFoundException就是找不到指定的类,常常是在查找函数找不到类的情况下出现;
2,而NoClassDefFoundError就是忘记加载类的依赖class,jar,或者类本身在其他包中。
相关文章推荐
- JVM源码分析-Java运行
- 在eclipse中如何添加spring和hibernate
- Java SE 7新增特效
- Java8特性之Lambda表达式
- Java经典设计模式之五大创建型模式
- Java ClassLoader 原理详细分析
- 关于Spring中的<context:annotation-config/>配置
- Java泛型方法
- spring 最全MAVEN 依赖引入配置
- spring配置entitymangerfactory
- CNF入门
- Java NIO
- null或空值的判断处理-java
- Java重入锁ReentrantLock
- SpringMVC中restful风格的URL
- Java HashMap工作原理及实现
- Java HashMap工作原理及实现
- Java组合与继承生成的类中构造函数的执行顺序
- Ubuntu14.04 JavaWeb环境搭建
- Java 文档注释