Java-java.lang.ClassNotFoundException和java.lang.NoClassDefFoundError的区别

发布于 2017-01-13 04:40:58 字数 29 浏览 1224 评论 1

这两个类都是类没有找到抛出的,有什么区别吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清晨说ぺ晚安 2017-10-18 05:03:17

我们都知道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。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文