欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

classNotFoundException与noclassdeffoundError

程序员文章站 2022-05-28 14:17:33
...
  1. 如名字所言,一个exception, 一个error, 而error是不建议捕捉的;
  2. classNotFound主要发生在Class.forName, ClassLoader.loadClass, Classloader.findSystemClass时动态加载类到内存中时,如果没有找到该类就会抛;还有一个原因是该类已经加载到内存中去了,此时另一个类加载器又尝试动态从同一个包中加载这个类;
  3. noClassDefFoundError主要由jvm抛出,大部分发生在new的时候却没有找到该类的定义。这个类在编译的时候有存在的,运行时却找不到。
  4. classNotFoundException发生在装入阶段;noClassDefFoundError发在生编译后使用阶段;
    加载时从外存储器找不到需要的class就出现ClassNotFoundException 
    连接时从内存找不到需要的class就出现NoClassDefFoundError
  5. classNotFoundException解决方法就是确定该类连同它依赖的包在类路径中;
  6. noClassDefoundError解决方法:确定依赖的包在运行时在正确的classPath中,通过System.getproperty("java.classpath")方法拿到实际存在的运行期classPath,如果不正确,可以通过-classpath命令明确指出正确的classPath。