选择显示字体大小

noclassdefdounderr与classnotfoundexception区别

noclassdefdounderr与classnotfoundexception区别

作者:langm





版权声明:本文可以自由转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
作者:langm
原文:http://www.matrix.org.cn/resource/article/44/44056_noclassdefdounderr.html
关键字:noclassdefdounderr classnotfoundexception

在读这篇文章之前,你最好了解一下java的exception机制。

也许你在开发的过程中经常地见到classnotfoundexception和noclassdeffounderr这两个异常,每每看到之后,都会一概而论的是类没有找到,但有些时候见到他们的时候又有些疑惑(至少我是这样),为什么java要用两个异常来表示类定义没有找到那?他们之间有什么区别那?

正巧今天我又碰到了这个问题,顺便的仔细研究了一下这两个异常的区别。
首先:
classnotfoundexception直接继承与exception,它是一个checked的异常。
noclassdeffounderr 继承自error->linkageerror ,它是一个unchecked的异常。

下面让我们看一下两个异常在api文档中的说明

classnotfoundexception:
当应用尝试用字符串名称通过下面的方法装载一个类时这个类的定义却没有找到时会抛出的异常。
class.forname
classloader.findsystemclass
classloader.loadclass
        
noclassdeffounderr:
当jvm或者classloader实例尝试装载一个类的定义(这通常是一个方法调用或者new表达式创建一个实例过程的一部分)而这个类定义并没有找时所抛出的错误。
当编译的时候可以找到这个类的定义,但是以后这个类不再存在。

这比较显而易见了吧,读好文档是很重要的事情。这里我就说一下我对这两个类的区别的理解。

classnotfoundexception异常只出现在你的应用程序主动的装载类的过程中,这个异常很多时候出现在我们的应用框架在初始化或者运行中动态装载已配置的类的过程中。这种情况下我们应该首先检查我们的配置或者参数是否错误,是否企图装载一个并不存在的类,如果配置没有错误,我们就应该查看classpath是否配置错误而导致classloader无法找到这个类,也应该检查要装载的类是否在一个jar包中而我们在引入这个jar包的过程中是否有遗漏或错误(这里jar包的版本也是一个需要格外注意的问题,很多时候混乱的jar包版本会造成太多的麻烦)。
        
noclassdeffounderr异常一般出现在我们编译环境和运行环境不一致的情况下,就是说我们有可能在编译过后更改了classpath或者jar包所以导致在运行的过程中jvm或者classloader无法找到这个类的定义(我曾经在编译后作了一次jar包的清理,然后应用就送给了我一个这样的礼物)。

我们经常用sdk开发应用,开发的过程中要引入很多jar包,有些sdk也会设定自己的classpath。编译过程结束后在运行的过程中就要将已开发的应用和所有引入的jar包拷贝到应用服务器的相应目录下才可以运行,而应用服务器使用的classpath也很有可能与sdk的不同,在这个过程中就有很大的几率造成双方环境不一致。所以很多开发者就会遇到在sdk中可以编译,运行也没有问题,但是同样的程序放到应用服务器上就出现noclassdeffounderr这个异常这种情况,这是让初学者很挠头的一个问题。

以上就是我对这两个异常的一点个人理解,希望对各位开发者有所帮助,可以让各位开发者在以后的开发过程中能够更快的找到问题所在。祝开发顺利




 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons