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

SpringBoot項(xiàng)目jar依賴問題報(bào)錯(cuò)解析

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

常見依賴錯(cuò)誤類型及報(bào)錯(cuò)內(nèi)容

1. 依賴沖突類錯(cuò)誤

(1) ClassNotFoundException(類找不到)

報(bào)錯(cuò)內(nèi)容

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

原因

  • 依賴版本不一致,導(dǎo)致類找不到
  • 項(xiàng)目中存在不同版本的同一個(gè)類
  • 依賴沖突,如知識(shí)庫[3]中描述的"WebServerFactoryCustomizer這個(gè)類是2.x版本才存在"

典型場景

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

(2) NoSuchMethodError(方法找不到)

報(bào)錯(cuò)內(nèi)容

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

原因

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

(3) ClassCastException(類型轉(zhuǎn)換異常)

報(bào)錯(cuò)內(nèi)容

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

原因

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

(4) LinkageError(鏈接錯(cuò)誤)

報(bào)錯(cuò)內(nèi)容

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

原因

  • 類被不同類加載器加載
  • 依賴版本不一致導(dǎo)致類加載沖突

2. 依賴配置錯(cuò)誤

(1) 依賴坐標(biāo)錯(cuò)誤

報(bào)錯(cuò)內(nèi)容

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/)

原因

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

解決方案

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

(2) 依賴范圍配置錯(cuò)誤

報(bào)錯(cuò)內(nèi)容

java.lang.NoClassDefFoundError: com.example.ThirdPartyClass

原因

  • 依賴范圍(scope)設(shè)置為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) 依賴傳遞沖突

報(bào)錯(cuò)內(nèi)容

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

原因

  • 項(xiàng)目中引入了多個(gè)版本的MyBatis Plus
  • 如知識(shí)庫[4]中描述:“zjbdos-cloud-framework-core里面發(fā)現(xiàn)也引入了mybatis-plus-extension導(dǎo)致與現(xiàn)有項(xiàng)目中的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依賴沖突

報(bào)錯(cuò)內(nèi)容

java.lang.ClassNotFoundException: com.example.MyCustomStarter

原因

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

4. 依賴沖突排查錯(cuò)誤

(1) 依賴沖突排查錯(cuò)誤

報(bào)錯(cuò)內(nèi)容

[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

原因

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

解決方案

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

三、依賴沖突解決技巧

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

報(bào)錯(cuò)內(nèi)容

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>

最佳實(shí)踐

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

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

報(bào)錯(cuò)內(nèi)容

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包導(dǎo)入問題

報(bào)錯(cuò)內(nèi)容

java.lang.NoClassDefFoundError: com.example.ThirdPartyClass

原因

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

解決方案

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

四、依賴問題排查流程

1. 查看詳細(xì)錯(cuò)誤日志

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]

關(guān)鍵點(diǎn)

  • 從日志中獲取具體異常類型
  • 查看異常堆棧跟蹤
  • 確認(rèn)異常發(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

關(guān)鍵點(diǎn)

  • 使用mvn dependency:tree命令分析依賴樹
  • 找出沖突的依賴版本
  • 識(shí)別重復(fù)的依賴項(xiàng)

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

關(guān)鍵點(diǎn)

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

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

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

六、最佳實(shí)踐建議

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. 識(shí)別沖突:找出重復(fù)的依賴和版本
  4. 解決沖突:使用<exclusions>排除沖突依賴或統(tǒng)一版本
  5. 驗(yàn)證:重新打包并測試

3. 依賴沖突預(yù)防措施

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

七、歸納下:

SpringBoot項(xiàng)目中的依賴問題主要分為以下幾類:

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

核心排查方法

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

最佳實(shí)踐

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

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

相關(guān)文章

  • SpringBoot自動(dòng)裝配原理以及分析

    SpringBoot自動(dòng)裝配原理以及分析

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

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

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

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

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

    spring boot 監(jiān)聽容器啟動(dòng)代碼實(shí)例

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

    Spring?Security權(quán)限注解啟動(dòng)及邏輯處理使用示例

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

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

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

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

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

    Mybatis-plus4條件構(gòu)造器使用方式

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

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

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

    Java中的構(gòu)造方法和方法重載完整代碼

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

最新評論

株洲市| 湘潭县| 桂林市| 铜川市| 厦门市| 泌阳县| 六枝特区| 鹤岗市| 通山县| 邵阳市| 安仁县| 都昌县| 鄂尔多斯市| 拉孜县| 乐至县| 五华县| 淮北市| 桐乡市| 扎兰屯市| 滦南县| 渭南市| 胶南市| 宜丰县| 南京市| 赞皇县| 和平县| 诸暨市| 锡林郭勒盟| 中超| 江北区| 临武县| 巴林右旗| 塘沽区| 丰都县| 四平市| 陆丰市| 邢台市| 华安县| 马公市| 安仁县| 娱乐|