<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 89,  comments - 98,  trackbacks - 0

    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這個異常這種情況,這是讓初學者很撓頭的一個問題。

    以上就是我對這兩個異常的一點個人理解,希望對各位開發者有所幫助,可以讓各位開發者在以后的開發過程中能夠更快的找到問題所在。祝開發順利

    posted on 2006-10-27 10:53 水煮三國 閱讀(594) 評論(0)  編輯  收藏 所屬分類: J2SE
    <2006年10月>
    24252627282930
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    常用鏈接

    留言簿(4)

    隨筆分類(85)

    隨筆檔案(89)

    文章分類(14)

    文章檔案(42)

    收藏夾(37)

    java

    oracle

    Sybase

    搜索

    •  

    積分與排名

    • 積分 - 210758
    • 排名 - 266

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲av午夜电影在线观看| 美女免费视频一区二区| 破了亲妺妺的处免费视频国产| MM1313亚洲国产精品| 伊人婷婷综合缴情亚洲五月| 四虎在线成人免费网站| 亚洲av第一网站久章草| 久久精品国产精品亚洲艾草网| 日韩吃奶摸下AA片免费观看| 国产精品午夜免费观看网站| 亚洲乱码一二三四五六区| 亚洲精品NV久久久久久久久久| 99视频在线精品免费| 亚洲AV成人一区二区三区观看| 亚洲色欲色欲www在线丝| 九九精品免费视频| 三年片免费观看大全国语| 91丁香亚洲综合社区| 亚洲一区无码中文字幕| 成年女人毛片免费观看97| 热99RE久久精品这里都是精品免费 | 国产精品成人观看视频免费| 人妻仑乱A级毛片免费看| 亚洲三级中文字幕| 久久精品国产亚洲综合色| 午夜国产羞羞视频免费网站| 2019中文字幕免费电影在线播放| 久香草视频在线观看免费| 亚洲熟妇AV一区二区三区宅男| 亚洲国产成人私人影院| 国产性爱在线观看亚洲黄色一级片| 久久久久免费看黄A片APP| 88xx成人永久免费观看| 91在线免费观看| 人与动性xxxxx免费| 亚洲AV无码一区二区三区性色| 亚洲综合激情九月婷婷 | 亚洲AV无码一区二区三区系列| 国产免费观看a大片的网站| 欧美在线看片A免费观看| 6080午夜一级毛片免费看|