Maven、Java的包管理的理解

Java的包管理機(jī)制
1. 什么是包
  • JVM的工作被設(shè)計(jì)得相當(dāng)簡單:
    1.執(zhí)行一個(gè)類的字節(jié)碼
    2.假如這個(gè)過程中碰到了新的類,加載他
  • 那么去哪里加載他呢?
2. 類路徑(Classpath)
  • 什么是類路徑:-classpath/-cp
  • 類的全限定類名(目錄層級(jí))唯一確定了一個(gè)類
  • 包就是把許多類放在一起打的壓縮包
3. Classpath hell
  • 傳遞性依賴是指你依賴的類還依賴了別的類
  • 全限定類名是類的唯一標(biāo)識(shí)
  • 當(dāng)多個(gè)同名類同時(shí)出現(xiàn)在Classpath中,就是噩夢(mèng)的開始
4. 什么是包管理
  • 你要使用一些第三方類,就要告訴JVM從哪里找
  • 包管理的實(shí)質(zhì)就是告訴JVM如何找到所需的第三方庫以及成功地解決其中地沖突問題
5. Maven——?jiǎng)潟r(shí)代的包管理工具
  • 約定優(yōu)于配置(Convention over configuration)
  • 必須強(qiáng)調(diào),Maven遠(yuǎn)遠(yuǎn)不止是包管理工具
  • Maven的包按照約定為所有的包編號(hào),方便檢索,groupId/artifactId/version
  • 依賴沖突的解決原則:最近的勝出
  • 當(dāng)你看到如下異常的時(shí)候:
    1.AbstractMethodError
    2.NoClassDefFoundError
    3.ClassNotFoundException
    4.LinkageError
  • 一般就是包沖突了,解決方法:
    1.單獨(dú)聲明需要引用的特定包
    2.排除掉沖突的包
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容