欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java之NoClassDefFoundError的原因及分析

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

ClassNotfoundException

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

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

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

不過一遇到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)了,下面簡單介紹一下JVM的類加載機(jī)制

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

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

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

所有在一些特定條件下就會(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、工程里沒有將jar添加到classpath,maven項(xiàng)目的,需要根據(jù)項(xiàng)目情況排查

總結(jié)

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

相關(guān)文章

  • Java實(shí)現(xiàn)在線預(yù)覽的示例代碼(openOffice實(shí)現(xiàn))

    Java實(shí)現(xiàn)在線預(yù)覽的示例代碼(openOffice實(shí)現(xiàn))

    本篇文章主要介紹了Java實(shí)現(xiàn)在線預(yù)覽的示例代碼(openOffice實(shí)現(xiàn)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • SpringBoot如何解析應(yīng)用參數(shù)args

    SpringBoot如何解析應(yīng)用參數(shù)args

    文章主要介紹了SpringBoot啟動(dòng)過程中如何解析`main`函數(shù)中的參數(shù)`args`,包括如何解析命令行參數(shù)、訪問選項(xiàng)參數(shù)和非選項(xiàng)參數(shù),接著,介紹了`ApplicationArguments`接口及其方法,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • Spring Cloud-Feign服務(wù)調(diào)用的問題及處理方法

    Spring Cloud-Feign服務(wù)調(diào)用的問題及處理方法

    Feign 是一個(gè)聲明式的 REST 客戶端,它用了基于接口的注解方式,很方便實(shí)現(xiàn)客戶端配置。接下來通過本文給大家介紹Spring Cloud-Feign服務(wù)調(diào)用,需要的朋友可以參考下
    2021-10-10
  • Java Property類使用詳解

    Java Property類使用詳解

    這篇文章主要介紹了Java Property類使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Spring MVC 接口 ResponseBodyAdvice 及其應(yīng)用最佳實(shí)踐記錄

    Spring MVC 接口 ResponseBodyAdvice 及其應(yīng)用最佳實(shí)

    ResponseBodyAdvice?是 Spring MVC 提供的一個(gè)強(qiáng)大接口,允許你在響應(yīng)體被寫入 HTTP 響應(yīng)之前對其進(jìn)行全局處理,下面我將全面介紹它的工作原理、使用場景和最佳實(shí)踐,感興趣的朋友一起看看吧
    2025-04-04
  • Java中常用的設(shè)計(jì)模式之建造者模式詳解

    Java中常用的設(shè)計(jì)模式之建造者模式詳解

    這篇文章主要為大家詳細(xì)介紹了Java中常用的設(shè)計(jì)模式之建造者模式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • IntelliJ?IDEA軟件內(nèi)如何實(shí)現(xiàn)更新到最新版本

    IntelliJ?IDEA軟件內(nèi)如何實(shí)現(xiàn)更新到最新版本

    文章介紹了如何在IntelliJIDEA中更新到最新版本以及如何回到之前忽略的版本,解決辦法是通過選擇"IgnoreThisUpdate"來跳過舊版本,重復(fù)操作即可更新到最新版本
    2024-12-12
  • spring boot 項(xiàng)目利用Jenkins實(shí)現(xiàn)自動(dòng)化部署的教程詳解

    spring boot 項(xiàng)目利用Jenkins實(shí)現(xiàn)自動(dòng)化部署的教程詳解

    這篇文章主要介紹了spring boot 項(xiàng)目利用Jenkins實(shí)現(xiàn)自動(dòng)化部署的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • JAVA GUI自定義JPanel畫板背景

    JAVA GUI自定義JPanel畫板背景

    這篇文章主要為大家詳細(xì)介紹了JAVA GUI自定義JPanel畫板背景的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Elasticsearch算分優(yōu)化方案之rescore_query示例詳解

    Elasticsearch算分優(yōu)化方案之rescore_query示例詳解

    這篇文章主要為大家介紹了Elasticsearch算分優(yōu)化方案之rescore_query示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08

最新評論