博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java.lang.ClassNotFoundException与java.lang.NoClassDefFoundError的区别(转)
阅读量:6257 次
发布时间:2019-06-22

本文共 1933 字,大约阅读时间需要 6 分钟。

 

ClassNotFoundException

ClassNotFoundException这个错误,比较常见也好理解。

  原因:就是找不到指定的class。

  常见的场景就是:

  1 调用class的forName方法时,找不到指定的类

  2 ClassLoader 中的 findSystemClass() 方法时,找不到指定的类

  3 ClassLoader 中的 loadClass() 方法时,找不到指定的类

java.lang.Class.java:

/**     * Returns the Class object associated with the class or     * interface with the given string name.  Invoking this method is     * equivalent to:     *     * 
     *  Class.forName(className, true, currentLoader)     * 
* * where currentLoader denotes the defining class loader of * the current class. * *

For example, the following code fragment returns the * runtime Class descriptor for the class named * java.lang.Thread: * *

     *   Class t = Class.forName("java.lang.Thread")     * 
*

* A call to forName("X") causes the class named * X to be initialized. * * @param className the fully qualified name of the desired class. * @return the Class object for the class with the * specified name. * @exception LinkageError if the linkage fails * @exception ExceptionInInitializerError if the initialization provoked * by this method fails * @exception ClassNotFoundException if the class cannot be located */ public static Class

forName(String className) throws ClassNotFoundException { return forName0(className, true, ClassLoader.getCallerClassLoader()); }

 

/** Called after security checks have been made. */    private static native Class forName0(String name, boolean initialize,                        ClassLoader loader)    throws ClassNotFoundException;

 

NoClassDefFoundError

这个就比较奇葩了,查找其他的资料是说,通过了编译,但是使用的时候,比如new的时候会出错。

  通过查找资料,搜集到如下的场景:

  1 类依赖的class或者jar不存在

  2 类文件存在,但是存在不同的域中

  3 大小写问题,javac编译的时候是无视大小的,很有可能你编译出来的class文件就与想要的不一样!这个没有做验证。

 

 

 

http://www.cnblogs.com/xing901022/p/4185514.html

 

你可能感兴趣的文章
基于SMTP协议的CMD命令邮件发送
查看>>
九度笔记之 1209最小邮票数
查看>>
Java中swap解惑
查看>>
HDU 2068 RPG的错排
查看>>
操作数有自增操作时复合表达式的陷阱
查看>>
从WW中剥离一个三维场景框架
查看>>
ASP.NET网页动态添加、更新或删除数据行
查看>>
vbs获取当前主机IP
查看>>
IIS7中的站点、应用程序和虚拟目录详细介绍
查看>>
为何C语言(的函数调用)需要堆栈,而汇编语言却不需要堆栈
查看>>
对Map按key和value分别排序
查看>>
知名第三方编译版tete009 Firefox 24.0
查看>>
java反射生成ORM
查看>>
堆和栈的区别
查看>>
生成CSV文件后再将CSV文件导入到mysql
查看>>
Html.DropDownListFor练习(2)
查看>>
Eclipse+Maven创建webapp项目<一>
查看>>
筑巢引凤
查看>>
C# console application executing macro function
查看>>
dll的概念 dll导出变量 函数 类
查看>>