最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java之NoClassDefFoundError的原因及分析

 更新時(shí)間:2024年09月24日 13:17:17   作者:smileNicky  
在Java開(kāi)發(fā)中,經(jīng)常會(huì)遇到ClassNotFoundException和NoClassDefFoundError異常,ClassNotFoundException發(fā)生在編譯時(shí)JVM無(wú)法找到類,而NoClassDefFoundError則發(fā)生在運(yùn)行時(shí)JVM無(wú)法加載類,這兩個(gè)異常雖然原因相似,但有本質(zhì)區(qū)別

ClassNotfoundException

java開(kāi)發(fā)中經(jīng)常遇到j(luò)ava.lang.ClassNotfoundException異常,ClassNotfoundException異常一般就是編譯時(shí)找不到類,Console臺(tái)就會(huì)輸出異常信息。

一般情況下,我們都會(huì)rebuild或者clean一下工程,讓項(xiàng)目重新編譯一遍。

兩個(gè)異常的區(qū)別

不過(guò)一遇到NoClassDefFoundError,我們有時(shí)也容易和ClassNotfoundException異常混淆。

雖然NoClassDefFoundError和ClassNotfoundException異常出現(xiàn)原因類似,都是因?yàn)榫幾g加載不到類導(dǎo)致的,但是卻有本質(zhì)的區(qū)別。

兩者的本質(zhì)區(qū)別就是:

  • ClassNotfoundException時(shí)在編譯時(shí)JVM加載不到類或者找不到類導(dǎo)致的;
  • 而NoClassDefError是在運(yùn)行時(shí)JVM加載不到類或者找不到類

NoClassDefFoundError錯(cuò)誤發(fā)生原因

為什么會(huì)發(fā)生NoClassDefFoundError錯(cuò)誤?

其實(shí)就是和Java虛擬機(jī)的工作原理有關(guān)了,下面簡(jiǎn)單介紹一下JVM的類加載機(jī)制

類加載器三個(gè)機(jī)制:委托、單一性、可見(jiàn)性

  • 委托:指加載一個(gè)類的請(qǐng)求交給父類加載器,若父類加載器不可以找到或者加載到,再加載這個(gè)類
  • 單一性:指子類加載器不會(huì)再次加載父類加載器已經(jīng)加載過(guò)的類
  • 可見(jiàn)性:子類加載器可以看見(jiàn)父類加載器加載的所有類,而父類加載器不可以看到子類加載器加載的類

JVM的類加載機(jī)制的委托行機(jī)制,決定了類加載器只加載一次,子類加載器不會(huì)再加載父類加載器已經(jīng)加載過(guò)的類

所有在一些特定條件下就會(huì)出現(xiàn)編譯時(shí)可以加載到類,運(yùn)行時(shí)不可以加載到類,這時(shí)候就會(huì)出現(xiàn)java.lang.NoClassDefFoundError異常

NoClassDefFoundError可能出現(xiàn)的情況

目前有發(fā)現(xiàn)幾種情況:

1、一種情況就是因?yàn)殪o態(tài)變量加載不到原因

2、工程里沒(méi)有將jar添加到classpath,maven項(xiàng)目的,需要根據(jù)項(xiàng)目情況排查

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • intellij idea中g(shù)it分支使用方式

    intellij idea中g(shù)it分支使用方式

    文章介紹了在git中如何使用分支進(jìn)行開(kāi)發(fā),包括如何創(chuàng)建新分支、切換分支、合并分支等操作,通過(guò)模擬兩個(gè)idea實(shí)例,分別在feature分支和master分支進(jìn)行開(kāi)發(fā),并最終將feature分支合并到master分支的過(guò)程
    2026-02-02
  • JavaWeb開(kāi)發(fā)之模仿知乎首頁(yè)完整代碼

    JavaWeb開(kāi)發(fā)之模仿知乎首頁(yè)完整代碼

    這篇文章主要介紹了JavaWeb開(kāi)發(fā)之模仿知乎首頁(yè)完整代碼的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-11-11
  • java對(duì)double數(shù)組排序示例分享

    java對(duì)double數(shù)組排序示例分享

    這篇文章主要介紹了java對(duì)double數(shù)組排序示例,代碼簡(jiǎn)單,下面我們直接上代碼,需要的朋友可以參考下
    2014-03-03
  • 通過(guò)使用Byte?Buddy便捷創(chuàng)建Java?Agent

    通過(guò)使用Byte?Buddy便捷創(chuàng)建Java?Agent

    這篇文章主要為大家介紹了如何通過(guò)使用Byte?Buddy便捷創(chuàng)建Java?Agent的使用說(shuō)明,有需要的朋友可以借鑒參考下希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • Java 中 Date 與 Calendar 之間的編輯與轉(zhuǎn)換實(shí)例詳解

    Java 中 Date 與 Calendar 之間的編輯與轉(zhuǎn)換實(shí)例詳解

    這篇文章主要介紹了Java 中 Date 與 Calendar 之間的編輯與轉(zhuǎn)換 ,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • Spring Bean的初始化和銷毀實(shí)例詳解

    Spring Bean的初始化和銷毀實(shí)例詳解

    這篇文章主要介紹了Spring Bean的初始化和銷毀,結(jié)合實(shí)例形式詳細(xì)分析了Spring Bean的初始化和銷毀相關(guān)配置、使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2019-11-11
  • spring三級(jí)緩存以及為什么不用二級(jí)緩存解讀

    spring三級(jí)緩存以及為什么不用二級(jí)緩存解讀

    Spring三級(jí)緩存機(jī)制解決了循環(huán)依賴問(wèn)題,通過(guò)一級(jí)緩存存放完全初始化的bean,二級(jí)緩存存放實(shí)例化但未完成依賴注入和初始化的bean,三級(jí)緩存存放bean的創(chuàng)建工廠,避免了重復(fù)創(chuàng)建和確保代理對(duì)象的正確生成
    2025-02-02
  • Java中使用json與前臺(tái)Ajax數(shù)據(jù)交互的方法

    Java中使用json與前臺(tái)Ajax數(shù)據(jù)交互的方法

    這篇文章主要為大家詳細(xì)介紹了Java中使用json與前臺(tái)Ajax數(shù)據(jù)交互的方法,分享Ajax獲取顯示Json數(shù)據(jù)的一種方法,感興趣的小伙伴們可以參考一下
    2016-06-06
  • spring boot 枚舉使用的坑整理

    spring boot 枚舉使用的坑整理

    在本篇文章里我們給大家整理了關(guān)于spring boot 枚舉使用的坑以及相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們學(xué)習(xí)下。
    2019-08-08
  • Spring中@Configuration注解的使用場(chǎng)景

    Spring中@Configuration注解的使用場(chǎng)景

    這篇文章主要介紹了Spring中@Configuration注解的使用場(chǎng)景,@Configuration注解是從Spring?3.0版本開(kāi)始加入的一個(gè)使Spring能夠支持注解驅(qū)動(dòng)開(kāi)發(fā)的標(biāo)注型注解,主要用于標(biāo)注在類上,需要的朋友可以參考下
    2023-11-11

最新評(píng)論

兰考县| 荣成市| 敖汉旗| 苍山县| 左权县| 积石山| 徐闻县| 古田县| 鲜城| 广宁县| 麟游县| 延津县| 海伦市| 名山县| 金平| 诏安县| 措勤县| 乌鲁木齐市| 美姑县| 沾化县| 儋州市| 汕头市| 东海县| 鹰潭市| 永济市| 宝兴县| 舞阳县| 澄城县| 尼玛县| 梁河县| 洛浦县| 嘉兴市| 巴林右旗| 涞水县| 荔浦县| 平远县| 赣州市| 灵川县| 龙里县| 民和| 玉环县|