您的位置:首页 > 编程语言 > Java开发

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

2020-04-23 09:24 1011 查看
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。

  • 点赞
  • 收藏
  • 分享
  • 文章举报
jing547789635 发布了5 篇原创文章 · 获赞 0 · 访问量 226 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐