最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot項目jar依賴問題報錯解析

 更新時間:2025年12月15日 14:32:51   作者:程序員1970  
本文主要介紹了Spring Boot項目中常見的依賴錯誤類型、報錯內容及解決方法,依賴沖突包括類找不到、方法找不到、類型轉換異常等,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧

常見依賴錯誤類型及報錯內容

1. 依賴沖突類錯誤

(1) ClassNotFoundException(類找不到)

報錯內容

java.lang.NoClassDefFoundError: org/springframework/boot/web/server/WebServerFactoryCustomizer

原因

  • 依賴版本不一致,導致類找不到
  • 項目中存在不同版本的同一個類
  • 依賴沖突,如知識庫[3]中描述的"WebServerFactoryCustomizer這個類是2.x版本才存在"

典型場景

  • Spring Boot版本混亂
  • 依賴庫版本不一致

(2) NoSuchMethodError(方法找不到)

報錯內容

java.lang.NoSuchMethodError: org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory.addErrorPages(Ljava/util/List;)V

原因

  • 依賴版本不匹配,方法簽名不一致
  • 不同版本的依賴庫之間存在方法差異

(3) ClassCastException(類型轉換異常)

報錯內容

java.lang.ClassCastException: com.example.MyClass cannot be cast to com.example.MyClass

原因

  • 加載了不同版本的同一個類
  • 類加載器隔離問題

(4) LinkageError(鏈接錯誤)

報錯內容

java.lang.LinkageError: loader 'app' attempted to load class 'com.example.MyClass' from both 'module1' and 'module2'

原因

  • 類被不同類加載器加載
  • 依賴版本不一致導致類加載沖突

2. 依賴配置錯誤

(1) 依賴坐標錯誤

報錯內容

Could not find artifact com.zjbdos.cloud:zjbdos-cloud-framework-core:pom:1.0.0 in alimaven (http://maven.aliyun.com/nexus/content/groups/public/)

原因

  • 依賴坐標(groupId、artifactId、version)錯誤
  • 倉庫地址配置錯誤
  • 依賴未發(fā)布到指定倉庫

解決方案

  • 確認依賴坐標正確
  • 檢查倉庫配置
  • 確認依賴已發(fā)布到指定倉庫

(2) 依賴范圍配置錯誤

報錯內容

java.lang.NoClassDefFoundError: com.example.ThirdPartyClass

原因

  • 依賴范圍(scope)設置為system,但未在打包插件中配置includeSystemScope
  • 依賴未被正確打包到最終的jar中

解決方案

<plugins>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <includeSystemScope>true</includeSystemScope>
        </configuration>
    </plugin>
</plugins>

3. 依賴傳遞沖突

(1) 依賴傳遞沖突

報錯內容

java.lang.NoSuchMethodError: com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor.<init>(Lcom/baomidou/mybatisplus/core/parser/ISqlParser;)V

原因

  • 項目中引入了多個版本的MyBatis Plus
  • 如知識庫[4]中描述:“zjbdos-cloud-framework-core里面發(fā)現(xiàn)也引入了mybatis-plus-extension導致與現(xiàn)有項目中的mybatis-plus-extension依賴發(fā)生沖突”

解決方案

<dependency>
    <groupId>com.zjbdos.cloud</groupId>
    <artifactId>zjbdos-cloud-framework-core</artifactId>
    <version>1.0.0</version>
    <exclusions>
        <exclusion>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-extension</artifactId>
        </exclusion>
        <exclusion>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
        </exclusion>
        <exclusion>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>

(2) 自定義starter依賴沖突

報錯內容

java.lang.ClassNotFoundException: com.example.MyCustomStarter

原因

  • 自定義starter與項目中其他依賴沖突
  • 依賴版本不匹配

4. 依賴沖突排查錯誤

(1) 依賴沖突排查錯誤

報錯內容

[WARNING] The following dependencies have been relocated:
[WARNING]     com.example:third-party-library:jar:1.2.3 -> org.hibernate:hibernate-core:jar:5.4.30.Final
[WARNING]     com.example:third-party-library:jar:1.2.3 -> org.hibernate:hibernate-core:jar:5.2.12.Final

原因

  • 依賴樹分析不充分
  • 未正確識別沖突的依賴

解決方案

  • 使用mvn dependency:tree命令分析依賴樹
  • 通過-Dincludes參數(shù)過濾特定依賴
  • 例如:mvn dependency:tree -Dincludes=com.yourpackage

三、依賴沖突解決技巧

1. 利用Maven依賴排除機制(最常用方法)

報錯內容

java.lang.NoClassDefFoundError: org/hibernate/Session

解決方案

<dependency>
    <groupId>com.example</groupId>
    <artifactId>third-party-library</artifactId>
    <version>1.2.3</version>
    <exclusions>
        <exclusion>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>

最佳實踐

  • 使用mvn dependency:tree命令分析依賴樹
  • 找出沖突的具體依賴
  • 排除依賴時確保被排除的依賴在其他地方有正確版本引入

2. 依賴版本統(tǒng)一

報錯內容

java.lang.NoSuchMethodError: org.springframework.data.jpa.repository.JpaRepository.save(Ljava/lang/Iterable;)Ljava/util/Collection;

解決方案

<properties>
    <spring-boot.version>2.7.18</spring-boot.version>
    <spring-data.version>2022.0.0</spring-data.version>
</properties>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-releasetrain</artifactId>
            <version>${spring-data.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

3. 本地jar包導入問題

報錯內容

java.lang.NoClassDefFoundError: com.example.ThirdPartyClass

原因

  • 未在打包插件中配置includeSystemScope
  • 依賴范圍設置為system但未正確打包

解決方案

<plugins>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <includeSystemScope>true</includeSystemScope>
        </configuration>
    </plugin>
</plugins>

四、依賴問題排查流程

1. 查看詳細錯誤日志

SEVERE: Servlet.service() for servlet [dispatcher] in context with path [/app] threw exception [Request processing failed; nested exception is java.lang.NoClassDefFoundError: org/springframework/boot/web/server/WebServerFactoryCustomizer]

關鍵點

  • 從日志中獲取具體異常類型
  • 查看異常堆棧跟蹤
  • 確認異常發(fā)生的代碼位置

2. 分析依賴樹

[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ myapp ---
[INFO] com.example:myapp:jar:1.0.0
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:2.7.18:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter:jar:2.7.18:compile
[INFO] |  |  \- org.springframework.boot:spring-boot:jar:2.7.18:compile
[INFO] |  \- org.springframework.boot:spring-boot-starter-tomcat:jar:2.7.18:compile
[INFO] |     \- org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.73:compile
[INFO] +- com.example:third-party-library:jar:1.2.3:compile
[INFO] |  \- org.hibernate:hibernate-core:jar:5.4.30.Final:compile
[INFO] \- org.hibernate:hibernate-core:jar:5.2.12.Final:compile

關鍵點

  • 使用mvn dependency:tree命令分析依賴樹
  • 找出沖突的依賴版本
  • 識別重復的依賴項

3. 檢查依賴范圍

[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ myapp ---
[INFO] com.example:myapp:jar:1.0.0
[INFO] +- com.example:third-party-library:jar:1.2.3:system
[INFO] |  \- org.hibernate:hibernate-core:jar:5.4.30.Final:system
[INFO] \- org.hibernate:hibernate-core:jar:5.2.12.Final:compile

關鍵點

  • 檢查依賴范圍(scope)是否正確
  • 確認system范圍的依賴是否配置了includeSystemScope

五、依賴問題常見場景及解決方案

問題類型報錯內容原因解決方案
依賴沖突NoClassDefFoundError: org/springframework/boot/web/server/WebServerFactoryCustomizerSpring Boot版本混亂使用mvn dependency:tree分析,排除沖突依賴
依賴沖突NoSuchMethodError: org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory.addErrorPages依賴版本不匹配統(tǒng)一依賴版本,使用dependencyManagement
依賴配置錯誤Could not find artifact com.zjbdos.cloud:zjbdos-cloud-framework-core:pom:1.0.0依賴坐標或倉庫錯誤檢查依賴坐標和倉庫配置
本地jar導入問題NoClassDefFoundError: com.example.ThirdPartyClass未配置includeSystemScope在spring-boot-maven-plugin中添加includeSystemScope
依賴傳遞沖突NoSuchMethodError: com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor.<init>依賴庫版本沖突使用<exclusions>排除沖突依賴
循環(huán)依賴問題BeanCurrentlyInCreationException構造器注入導致的循環(huán)依賴使用@Lazy或重構架構

六、最佳實踐建議

1. 依賴管理規(guī)范

<properties>
    <java.version>1.8</java.version>
    <spring-boot.version>2.7.18</spring-boot.version>
    <mybatis-plus.version>3.5.7</mybatis-plus.version>
</properties>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatis-plus.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

2. 依賴沖突排查流程

  1. 查看日志:獲取具體異常信息
  2. 分析依賴樹:使用mvn dependency:tree命令
  3. 識別沖突:找出重復的依賴和版本
  4. 解決沖突:使用<exclusions>排除沖突依賴或統(tǒng)一版本
  5. 驗證:重新打包并測試

3. 依賴沖突預防措施

  • 定期清理依賴:移除不再使用的依賴
  • 使用BOM管理:通過Spring Boot的BOM統(tǒng)一依賴版本
  • 依賴樹分析:在每次添加新依賴前進行依賴樹分析
  • 自動化檢查:在CI/CD流程中添加依賴沖突檢查

七、歸納下:

SpringBoot項目中的依賴問題主要分為以下幾類:

  1. 依賴沖突:類找不到、方法找不到、類型轉換異常等
  2. 依賴配置錯誤:坐標錯誤、范圍錯誤
  3. 依賴傳遞沖突:不同庫之間依賴了同一個庫的不同版本
  4. 本地依賴導入問題:未正確配置系統(tǒng)范圍依賴

核心排查方法

  • 使用mvn dependency:tree分析依賴樹
  • 識別沖突的具體依賴
  • 使用<exclusions>排除沖突依賴
  • 統(tǒng)一依賴版本

最佳實踐

  • 使用dependencyManagement統(tǒng)一管理依賴版本
  • 對于本地jar包,確保在打包插件中配置includeSystemScope
  • 添加依賴前先進行依賴樹分析
  • 避免不必要的依賴,保持項目簡潔

到此這篇關于SpringBoot項目jar依賴問題報錯解析的文章就介紹到這了,更多相關springboot jar依賴內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringBoot自動裝配原理以及分析

    SpringBoot自動裝配原理以及分析

    這篇文章主要介紹了SpringBoot自動裝配原理以及分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • java執(zhí)行windows下cmd命令的方法

    java執(zhí)行windows下cmd命令的方法

    這篇文章主要介紹了java執(zhí)行windows下cmd命令的方法,較為詳細的說明了Java執(zhí)行Windows下CMD命令的方法,并總結了常用的CMD命令供大家參考,需要的朋友可以參考下
    2014-11-11
  • Java?8中讀取文件內容?Files.lines()方法使用示例

    Java?8中讀取文件內容?Files.lines()方法使用示例

    這篇文章主要介紹了Java?8中讀取文件內容Files.lines()方法如何使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • spring boot 監(jiān)聽容器啟動代碼實例

    spring boot 監(jiān)聽容器啟動代碼實例

    這篇文章主要介紹了spring boot 監(jiān)聽容器啟動代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • Spring?Security權限注解啟動及邏輯處理使用示例

    Spring?Security權限注解啟動及邏輯處理使用示例

    這篇文章主要為大家介紹了Spring?Security權限注解啟動及邏輯處理使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Springboot中靜態(tài)文件的兩種引入方式總結

    Springboot中靜態(tài)文件的兩種引入方式總結

    這篇文章主要介紹了Springboot中靜態(tài)文件的兩種引入方式總結,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 詳解Springboot如何優(yōu)雅的進行數(shù)據(jù)校驗

    詳解Springboot如何優(yōu)雅的進行數(shù)據(jù)校驗

    基于?Spring?Boot?,如何“優(yōu)雅”的進行數(shù)據(jù)校驗呢,本文將待大家詳細介紹Springboot如何優(yōu)雅的進行數(shù)據(jù)校驗,文中有詳細的代碼示例和流程步驟,需要的朋友可以參考下
    2023-06-06
  • Mybatis-plus4條件構造器使用方式

    Mybatis-plus4條件構造器使用方式

    這篇文章主要介紹了Mybatis-plus4條件構造器使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • springmvc如何使用map接收參數(shù)

    springmvc如何使用map接收參數(shù)

    這篇文章主要介紹了springmvc如何使用map接收參數(shù)的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java中的構造方法和方法重載完整代碼

    Java中的構造方法和方法重載完整代碼

    在Java編程中,構造方法用于初始化對象,而方法重載允許同一個類中存在多個同名方法但參數(shù)不同,文中通過代碼及圖文介紹的非常詳細,需要的朋友可以參考下
    2024-10-10

最新評論

宁波市| 简阳市| 彩票| 汉川市| 南皮县| 林甸县| 京山县| 华安县| 高唐县| 榕江县| 巩义市| 泸水县| 阳东县| 乐平市| 二连浩特市| 西乡县| 泊头市| 榆社县| 镇康县| 永康市| 大城县| 封开县| 乐业县| 怀仁县| 乐昌市| 新闻| 吐鲁番市| 蓬溪县| 朝阳市| 屏山县| 峨山| 年辖:市辖区| 江津市| 敖汉旗| 鄢陵县| 宿迁市| 德保县| 乐都县| 长丰县| 老河口市| 鄂尔多斯市|