日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

maven依赖错误排查经验

發布時間:2025/7/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 maven依赖错误排查经验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

maven錯誤排查經驗

maven依賴的仲裁原則

  • 有parent的情況先合并parent中的dependencies和dependencyManagement,到當前pom的dependencies和dependencyManagement,依照上層覆蓋下層原則
  • 不同路徑深度,短路徑優先;
  • 相同路徑深度,相同區域(dependencies或者dependencyManagement),深度為1后引入優先,深度不為1時,先引入為先
  • 相同路徑深度,不同區域,dependencies區域優先
  • 只有最上層的dependencyManagement起作用,其他層的dependencyManagement將被忽略;

示例:

  • 不同路徑,短路徑優先

    C --> A 1.0 -->B 1.0
    --> B 2.0

    最終是依賴于2.0

  • 相同路徑,路徑為1后引入優先

    C --> A 1.0
    --> A 2.0
    最終依賴于A 2.0

  • 相同路徑,路徑不為1先引入優先

    C --> A 1.0 --> B 1.0
    --> D 1.0 --> B 2.0
    最終依賴于B 1.0

    常見的問題

    由于pom依賴的問題,導致jar版本沖突,報錯信息NoSuchMethodException,同類問題ClassNotFoundException、NoClassDefException、ClassCastException

  • 排查方式

  • -XX:+TraceClassLoading
    加啟動參數,會把這個類是從哪個jar包加載的打印出來
  • jar -tvf *.jar
    tomcat 從lib目錄下加載jar包,解壓打印所有的類,查找包名類名相同的,如果存在且md5不一樣,就是版本沖突

    解決方式:

    mvn中做exclusion

  • 心得體會:

    最近在排查依稀pom依賴沖突,應用依賴了IC和UIC的相關pom,在升級相關版本的時候,jar包沖突,而且有很多依賴代碼并沒有實際引用,但是在啟動的時候報了NoClassDef。

    通常情況下,這種升級某個pom依賴后導致的jar包問題,最好的方式:在升級的版本依賴dependency是exclusion對應的沖突jar,一開始也是這樣解決的,但是依然部署不起來,按照道理來講,排除了這個依賴以后,應該是其他依賴包引入的。進過排查,有兩個原因:

    • 發現原來的spring升級不成功,導致依賴的pom實際是IC的pom,而exclusion后,版本降低,代碼報錯
    • 同路徑依賴,原先也是依賴IC的pom,排除以后,依賴版本不對進而報錯

      A -- IC --> B 3.0
      C --> D --> B 2.0
      E --> F --> B 1.0

    這種情況下,原理依賴的B 3.0,由于升級了IC,exclusion B,之后B依賴版本降低,導致的

    轉載于:https://www.cnblogs.com/kakaxisir/p/6527487.html

    總結

    以上是生活随笔為你收集整理的maven依赖错误排查经验的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。