首页
学习
活动
专区
圈层
工具
发布

ClassNotFoundException 和 NoClassDefFoundError 的区别

这里提出了一个问题:ClassNotFoundException 和 NoClassDefFoundError 有什么区别。 在这之前,自己没有遇到过这个问题,就借此机会做下思考: ? ?...ClassNotFoundException 和 NoClassDefFoundError 首先,正如它们的名字所说明的: NoClassDefFoundError是一个错误(Error),而 ClassNOtFoundException...在Java中错误和异常是有区别的:我们可以从异常中恢复程序,但却不应该尝试从错误中恢复程序。...这个时候就会导致NoClassDefFoundError 由于 NoClassDefFoundError 是有 JVM 引起的,所以不应该尝试捕捉这个错误。...加载时从外存储器找不到需要的 Class 就出现 ClassNotFoundException 连接时从内存找不到需要的 class 就出现 NoClassDefFoundError 写在最后: 异常的出现让我们编写的程序运行起来更加的健壮

7.1K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ClassNotFoundException和NoClassDefFoundError的区别

    最近看到一个面试题,问ClassNotFoundException和NoClassDefFoundError的区别。平时没有专门思考过这个问题,藉此机会分析一下。...一个直观的区别是一个是异常,一个是错误,异常和错误的区别就可以先讲一波。 然后其他的相同点和不同点在看到的一篇非常好的英文文章中有详细的讲述,翻译在此。 1. ...介绍 ClassNotFoundException 和NoClassDefFoundError都发生在JVM在classpath下找不到所需的类时。 虽然看起来很相似,但是两者有很大不同。...NoClassDefFoundError NoClassDefFoundError是一种致命错误。...英文原文:https://www.baeldung.com/java-classnotfoundexception-and-noclassdeffounderror 源代码地址:https://github.com

    1.9K20

    聊聊面试-NoClassDefFoundError 和 ClassNotFoundException 区别

    ---- 常见回答 NoClassDefFoundError 是一种 Error,Error 在大多数情况下代表无法从程序中恢复的致命错误,产生的原因在于 JVM 或者 ClassLoader 在运行时类加载器在...classpath 下找不到需要的类定义(编译期是可以正常找到的,所以和 ClassNotFoundException 不同的是这是一个运行期的 Error),这个时候虚拟机就会抛出 NoClassDefFoundError...以上是大致的 NoClassDefFoundError 和 ClassNotFoundException 的区别,那么延伸一下可以探讨 Java 类型体系中的 Error 和 Exception --...-- Error 和 Exception 的区别 Error 和 Exception 都是继承 Throwable 类,它们体现 Java 设计者在对异常的不同情况所进行的分类处理,在 Java 中只有...和 ClassNotFoundException 区别 的问题和一个简单的异常处理程序 demo 牵引出 Java 的异常体系和不同的分类和平时对异常处理的注意事项 另外推荐大家在实践中尽量使用统一异常处理的机制

    85010

    ClassNotFoundException,NoClassDefFoundError,NoSuchMethodError排查

    本文会简单分析三个异常发生的原因,并给出排查思路和相关工具。...ClassNotFoundException的异常场景有限,所以通常遭遇得比较少,如果遭遇了只要查找classpath是是否真的存在对应的类即可。...平时遭遇的更常见的与‘找不到类’相关的错误是NoClassDefFoundError NoClassDefFoundError 这个错误发生的场景就比较多了,较为常见的有: 运行期真真找不到对应的类 例如...总结 本文简述了ClassNotFoundException,NoClassDefFoundError,NoSuchMethodError的发生场景,给出了相关的排查思路与排查工具。...参考文献 哲良的oldratlee的useful-scripts ClassNotFoundException vs. NoClassDefFoundError PreCheck 依赖树打印插件

    2.4K30

    NoClassDefFoundError 和 ClassNotFoundException 有什么区别?

    ClassNotFoundException 当应用程序运行的过程中尝试使用类加载器去加载Class文件的时候,如果没有在classpath中查找到指定的类,就会抛出ClassNotFoundException...Class.forName()或者ClassLoader.loadClass以及使用ClassLoader.findSystemClass()在运行时加载类的时候,如果类没有被找到,那么就会导致JVM抛出ClassNotFoundException...NoClassDefFoundError 当JVM在加载一个类的时候,如果这个类在编译时是可用的,但是在运行时找不到这个类的定义的时候,JVM就会抛出一个NoClassDefFoundError错误。...比如当我们在new一个类的实例的时候,如果在运行是类找不到,则会抛出一个NoClassDefFoundError的错误。 ?

    71500

    理解ClassNotFoundException与NoClassDefFoundError的区别

    上篇文章已经介绍过Java的类加载机制,在类加载的过程中我们最常遇到的异常就是: ClassNotFoundException NoClassDefFoundError 但是你知道他们的区别吗?...既然它存在,那么在jvm里面一定能找到,如果不能找到,那就说明出大事了,因为编译和运行不一致,所以直接抛出这个ERROR,代表问题很严重。...498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) 注意这种情况比较特殊,并不是因为编译时和运行时环境不一致导致的...总结: 本文主要对比介绍了ClassNotFoundException与NoClassDefFoundError的区别和发生条件,从上面的测试我们可以分析出,直接采用反射或者类加载器的loadClass...方法去动态加载一个所有classpath里面的都不存在的类,类加载器在运行时的load阶段就会直接抛出ClassNotFoundException异常。

    9.9K30

    当dex分包遇上NoClassDefFoundError & ClassNotFoundException

    在主dex中 这两个Crash在测试中不可复现 按常理,在主dex中的类,并不会出现NoClassDefFoundError/ClassNotFoundException这种Crash,不过谨慎起见我们还是对分包方案进行了一翻研究...答:log.txt抓取的是程序挂掉瞬间的logcat信息,因为输出这个关键log信息的地方并不会导致程序挂掉,所以只有在很极端的情况(ExceptionInInitializerError和NoClassDefFoundError...第二处没有catch的java.lang.NoClassDefFoundError异常 ?...2015-09-30: 问题解决啦,国庆的3倍也顺利逃过啦 ---- 灰度验证 吸取之前的教训,这次我们同时灰度了两个包,对比dex分包所带来的问题: 验证结果:9112和9113版本Crash率均在预期的范围内...(0.5%左右),且无TOP1&TOP2 Crash ---- 总结 惯性思维思考问题容易陷入盲区 相信证据,当证据和常识相违背时,给证据多一点信任,深入分析其根因 当解决问题遇到瓶颈时,不要忘记重新审视问题本身

    2.8K90

    当dex分包遇上NoClassDefFoundError&ClassNotFoundException

    在主dex中 这两个Crash在测试中不可复现 按常理,在主dex中的类,并不会出现NoClassDefFoundError/ClassNotFoundException这种Crash,不过谨慎起见我们还是对分包方案进行了一翻研究...答:log.txt抓取的是程序挂掉瞬间的logcat信息,因为输出这个关键log信息的地方并不会导致程序挂掉,所以只有在很极端的情况(ExceptionInInitializerError和NoClassDefFoundError...中存在的潜在风险,将静态成员 2015-09-30: 问题解决啦,国庆的3倍也顺利逃过啦 ---- 灰度验证 吸取之前的教训,这次我们同时灰度了两个包,对比dex分包所带来的问题: 验证结果:9112和9113...版本Crash率均在预期的范围内(0.5%左右),且无TOP1&TOP2 Crash ---- 总结 惯性思维思考问题容易陷入盲区 相信证据,当证据和常识相违背时,给证据多一点信任,深入分析其根因 当解决问题遇到瓶颈时...void run() { Activity activity = new Activity(); } }.start(); ---- 本文系腾讯bugly独家内容,转载请在文章开头显眼处注明注明作者和出处

    91720

    深入理解 Java 中的 ClassNotFoundException 和 NoClassDefFoundError 及排查技巧

    实战干货:编程严选网 0 前言 在 Java 开发中,ClassNotFoundException 和 NoClassDefFoundError 是两种常见的运行时问题,通常与类加载有关。...之后,当应用程序试图使用这些加载失败的类时,就可能在运行时遇到 ClassNotFoundException 或 NoClassDefFoundError。...4 核心区别总结 对比点 ClassNotFoundException NoClassDefFoundError...和 NoClassDefFoundError 都表示 JVM 无法使用某个类,但它们的含义不同: ClassNotFoundException 通常表示:“我在你指定的位置找不到这个类文件。”...参考: Java SE 8 API:ClassNotFoundException Java SE 8 API:NoClassDefFoundError JVM 故障排查指南(Oracle) — 可根据关键词查找相关章节

    1.8K21
    领券