06.類加載器負(fù)責(zé)的范圍

類加載器負(fù)責(zé)的范圍,首先看張圖

003. 各類加載器范圍.png

通過(guò)代碼驗(yàn)證如下結(jié)論

public class MyTest18 {
    public static void main(String[] args) {
        System.out.println(System.getProperty("sun.boot.class.path"));
        System.out.println(System.getProperty("java.ext.dirs"));
        System.out.println(System.getProperty("java.class.path"));
    }
}

在idea里面運(yùn)行上述程序,會(huì)的到如下結(jié)果

啟動(dòng)類加載器
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/resources.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/rt.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/sunrsasign.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/jsse.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/jce.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/charsets.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/jfr.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/classes

擴(kuò)展類加載器
/Users/zj/Library/Java/Extensions:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/ext:
/Library/Java/Extensions:
/Network/Library/Java/Extensions:
/System/Library/Java/Extensions:
/usr/lib/java

系統(tǒng)類加載器
為什么在當(dāng)前idea環(huán)境所編寫(xiě)的這些class會(huì)被自動(dòng)加載兄裂,因?yàn)闀?huì)idea會(huì)自動(dòng)將target/classes添加到classpath里面粉捻,因此會(huì)被系統(tǒng)類加載器所加載
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/charsets.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/deploy.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/ext/dnsns.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/ext/jaccess.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/ext/localedata.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/ext/nashorn.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/ext/sunec.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/ext/zipfs.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/javaws.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/jce.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/jfr.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/jfxswt.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/jsse.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/management-agent.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/plugin.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/resources.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/rt.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/lib/ant-javafx.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/lib/dt.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/lib/javafx-mx.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/lib/jconsole.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/lib/packager.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/lib/sa-jdi.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/lib/tools.jar:
/Users/zj/workspace/java/study/jdk8/target/classes:
/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar

如果使用java com.zj.study.jvm.classloader.MyTest18 在控制臺(tái)運(yùn)行,輸出結(jié)果如下
啟動(dòng)類加載器
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/resources.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/rt.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/sunrsasign.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/jsse.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/jce.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/charsets.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/jfr.jar:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/classes

擴(kuò)展類加載器
/Users/zj/Library/Java/Extensions:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/ext:
/Library/Java/Extensions:
/Network/Library/Java/Extensions:
/System/Library/Java/Extensions:
/usr/lib/java
.

可以看到系統(tǒng)類加載器加載的不同彰亥,這是因?yàn)閕dea對(duì)classpath進(jìn)行修改

對(duì)于啟動(dòng)類加載器,修改啟動(dòng)類加載器加載的目錄泪漂,如

java -Dsun.boot.class.path=. com.zj.study.jvm.classloader.MyTest18

則會(huì)出現(xiàn)如下異常

Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
這是因?yàn)樵贠racle的Hotspot實(shí)現(xiàn)中廊营,系統(tǒng)屬性sun.boot.class.path如果設(shè)置錯(cuò)誤,則運(yùn)行會(huì)出錯(cuò)萝勤,提示如下錯(cuò)誤信息
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object

對(duì)于擴(kuò)展類加載器,如果動(dòng)態(tài)指定擴(kuò)展類加載器加載的目錄,比如代碼

public class MyTest19 {
    public static void main(String[] args) {
        AESKeyGenerator aesKeyGenerator = new AESKeyGenerator();

        System.out.println(aesKeyGenerator.getClass().getClassLoader());
        System.out.println(MyTest19.class.getClassLoader());
    }
}

AESKeyGenerator 是由擴(kuò)展類加載器加載的
如果動(dòng)態(tài)指定擴(kuò)展類加載器加載的目錄露筒,使用如下命令運(yùn)行 會(huì)報(bào)錯(cuò)
java -Djava.ext.dirs=./ com.zj.study.jvm.classloader.MyTest19
拋java.lang.ClassNotFoundException異常

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市敌卓,隨后出現(xiàn)的幾起案子慎式,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瘪吏,死亡現(xiàn)場(chǎng)離奇詭異癣防,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)掌眠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門(mén)蕾盯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蓝丙,你說(shuō)我怎么就攤上這事级遭。” “怎么了迅腔?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵装畅,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我沧烈,道長(zhǎng)掠兄,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任锌雀,我火速辦了婚禮蚂夕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘腋逆。我一直安慰自己婿牍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布惩歉。 她就那樣靜靜地躺著等脂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪撑蚌。 梳的紋絲不亂的頭發(fā)上上遥,一...
    開(kāi)封第一講書(shū)人閱讀 51,763評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音争涌,去河邊找鬼粉楚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛亮垫,可吹牛的內(nèi)容都是我干的模软。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼饮潦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼燃异!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起继蜡,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤特铝,失蹤者是張志新(化名)和其女友劉穎暑中,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體鲫剿,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鳄逾,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了灵莲。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雕凹。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖政冻,靈堂內(nèi)的尸體忽然破棺而出枚抵,到底是詐尸還是另有隱情,我是刑警寧澤明场,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布汽摹,位于F島的核電站,受9級(jí)特大地震影響苦锨,放射性物質(zhì)發(fā)生泄漏逼泣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一舟舒、第九天 我趴在偏房一處隱蔽的房頂上張望拉庶。 院中可真熱鬧,春花似錦秃励、人聲如沸氏仗。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)皆尔。三九已至,卻和暖如春币励,著一層夾襖步出監(jiān)牢的瞬間床佳,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工榄审, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人杆麸。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓搁进,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親昔头。 傳聞我的和親對(duì)象是個(gè)殘疾皇子饼问,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一、什么是Classloader 一個(gè)Java程序要想運(yùn)行起來(lái)揭斧,首先需要經(jīng)過(guò)編譯生成 .class文件莱革,然后創(chuàng)建一...
    阿里加多閱讀 2,579評(píng)論 1 21
  • 一峻堰、類加載器基本原理 虛擬機(jī)提供了3種類加載器:Bootstrap類加載器、Ext類加載器盅视、App類加載器捐名。他們之...
    一天的閱讀 4,259評(píng)論 1 3
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 2,699評(píng)論 0 3
  • 可能是萬(wàn)惡的r自動(dòng)更新導(dǎo)致之前的函數(shù)、包不可用闹击,重新踏上安裝RODPS的坑 前提: macOS 10.12.6 R...
    叢小賤閱讀 1,012評(píng)論 0 0
  • 由于各Linux開(kāi)發(fā)廠商的不同,因此不同開(kāi)發(fā)廠商的Linux版本操作細(xì)節(jié)也不一樣,今天就來(lái)說(shuō)一下CentOS下JD...
    wildbee58閱讀 721評(píng)論 0 1