ClassNotFoundException和NoClassDefFoundError的区别

 我来答
就烦条0o
2017-03-21 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
java.lang.ClassNotFoundException和java.lang.NoClassDefFoundError的区别
这2个东西应该是java里很常见,很简单,他们都和classpath设定有关,但区别在哪里呢? 我们都知道java里生成对象有如下两种方式:
1:Object obj = new ClassName(); 直接new一个对象
2:Class clazz = Class.forName(ClassName);
Object obj = clazz.newInstance(); 通过class loader动态装载一个类,然后获取这个类的实例
同样是生成对象,1在编译期间检查classpath, 如果没有类定义,编译没法通过。而2在编译期间是不会检查的,不过需要抛出或者自己 catch ClassNotFoundException。运行期间,如果1编译时依赖的类不在classpath中(导致classloader装载失败),此时抛出的异常就是 NoClassDefFoundError。而如果2在运行期间需要装载的类不在classpath中,抛出的则是 ClassNotFoundException。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式