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

Java之NoClassDefFoundError的原因及分析

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

ClassNotfoundException

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

一般情況下,我們都會rebuild或者clean一下工程,讓項目重新編譯一遍。

兩個異常的區(qū)別

不過一遇到NoClassDefFoundError,我們有時也容易和ClassNotfoundException異?;煜?。

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

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

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

NoClassDefFoundError錯誤發(fā)生原因

為什么會發(fā)生NoClassDefFoundError錯誤?

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

類加載器三個機制:委托、單一性、可見性

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

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

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

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

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

1、一種情況就是因為靜態(tài)變量加載不到原因

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

總結(jié)

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

    Spring Bean的初始化和銷毀實例詳解

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

    spring三級緩存以及為什么不用二級緩存解讀

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

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

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

    spring boot 枚舉使用的坑整理

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

    Spring中@Configuration注解的使用場景

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

最新評論

菏泽市| 东至县| 宣武区| 南华县| 古浪县| 浑源县| 日照市| 武邑县| 通山县| 娱乐| 恩施市| 彩票| 武鸣县| 贵南县| 青阳县| 遂宁市| 吴桥县| 全南县| 东乡县| 长武县| 灌南县| 台州市| 上犹县| 宣化县| 唐海县| 天水市| 锡林浩特市| 右玉县| 星座| 柯坪县| 禄劝| 永靖县| 盐津县| 泸州市| 通城县| 安国市| 日喀则市| 昌吉市| 太湖县| 渭南市| 休宁县|