Java的包管理機制
1. 什么是包
- JVM的工作被設(shè)計得相當簡單:
1.執(zhí)行一個類的字節(jié)碼
2.假如這個過程中碰到了新的類鸭丛,加載他 - 那么去哪里加載他呢眉抬?
2. 類路徑(Classpath)
- 什么是類路徑:-classpath/-cp
- 類的全限定類名(目錄層級)唯一確定了一個類
- 包就是把許多類放在一起打的壓縮包
3. Classpath hell
- 傳遞性依賴是指你依賴的類還依賴了別的類
- 全限定類名是類的唯一標識
- 當多個同名類同時出現(xiàn)在Classpath中,就是噩夢的開始
4. 什么是包管理
- 你要使用一些第三方類瞒爬,就要告訴JVM從哪里找
- 包管理的實質(zhì)就是告訴JVM如何找到所需的第三方庫以及成功地解決其中地沖突問題
5. Maven——劃時代的包管理工具
- 約定優(yōu)于配置(Convention over configuration)
- 必須強調(diào)弓柱,Maven遠遠不止是包管理工具
- Maven的包按照約定為所有的包編號沟堡,方便檢索,groupId/artifactId/version
- 依賴沖突的解決原則:最近的勝出
- 當你看到如下異常的時候:
1.AbstractMethodError
2.NoClassDefFoundError
3.ClassNotFoundException
4.LinkageError - 一般就是包沖突了矢空,解決方法:
1.單獨聲明需要引用的特定包
2.排除掉沖突的包