Spring解決依賴版本不一致報(bào)錯(cuò)問(wèn)題
問(wèn)題描述
報(bào)錯(cuò)信息如下
Description:
An attempt was made to call a method that does not exist. The attempt was made from the following location:
io.undertow.websockets.jsr.Bootstrap.handleDeployment(Bootstrap.java:84)
?
The following method did not exist:
?
javax.servlet.ServletContext.getClassLoader()Ljava/lang/ClassLoader;
?
The method's class, javax.servlet.ServletContext, is available from the following locations:
?
jar:file:/E:/.m2/repository/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar!/javax/servlet/ServletContext.class
?
jar:file:/E:/.m2/repository/jakarta/servlet/jakarta.servlet-api/4.0.4/jakarta.servlet-api-4.0.4.jar!/javax/servlet/ServletContext.class
?
?
The class hierarchy was loaded from the following locations:
?
javax.servlet.ServletContext: file:/E:/.m2/repository/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar
Action:
Correct the classpath of your application so that it contains a single, compatible version of javax.servlet.ServletContext報(bào)錯(cuò)描述
試圖從以下位置去調(diào)用一個(gè)不存在的方法:
io.undertow.websockets.jsr.Bootstrap.handleDeployment(Bootstrap.java:84); javax.servlet.ServletContext.getClassLoader()Ljava/lang/ClassLoader;
該方法不存在;
該方法的類javax.servlet.ServletContext可從以下位置獲得:
jar:file:/E:/.m2/repository/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar!/javax/servlet/ServletContext.class ? jar:file:/E:/.m2/repository/jakarta/servlet/jakarta.servlet-api/4.0.4/jakarta.servlet-api-4.0.4.jar!/javax/servlet/ServletContext.class
類層次結(jié)構(gòu)是從以下位置加載的:
javax.servlet.ServletContext: file:/E:/.m2/repository/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar
更正應(yīng)用程序的類路徑,使其包含一個(gè)單獨(dú)的兼容版本的javax.servlet.ServletContext。
上邊的解釋說(shuō)人話就是servlet-api和jakarta.servlet-api下的 ServletContext.class 沖突了,需要修改一下版本依賴。
解決方法
首先打開(kāi)IDEA的 setting 設(shè)置

然后選擇 Plugins 插件,下載Maven Helper插件,如果安裝之后不生效,可以重啟一下 IDEA

最后打開(kāi) pom.xml 文件,選擇 Dependency Analyzer 切換頁(yè),選擇 All Dependencies as Tree 選項(xiàng),然后搜索 javax,然后右鍵選擇 Exclude 排除重復(fù)依賴就可以了。

點(diǎn)完之后會(huì)發(fā)現(xiàn) pom.xml 文件中會(huì)出現(xiàn)如下代碼
<dependency> ? <groupId>com.xxx.kas.swagger</groupId> ? <artifactId>swagger-spring-mvc-core</artifactId> ? <version>1.0-SNAPSHOT</version> ? <exclusions> ? <exclusion> ? <artifactId>servlet-api</artifactId> ? <groupId>javax.servlet</groupId> ? </exclusion> ? </exclusions> ? </dependency>
如果排除之后依然報(bào)錯(cuò),可以選擇上圖的Jump To Source跳轉(zhuǎn)到對(duì)應(yīng)的倉(cāng)庫(kù)內(nèi)將對(duì)應(yīng)版本刪除即可。
刷新下依賴,發(fā)現(xiàn)正常啟動(dòng)了,搞定。
總結(jié)
以后再遇到這種包依賴沖突的問(wèn)題都可以使用Maven Helper這個(gè)插件來(lái)輕松解決,媽媽再也不用擔(dān)心我的學(xué)習(xí)了。
到此這篇關(guān)于Spring解決依賴版本不一致報(bào)錯(cuò)問(wèn)題的文章就介紹到這了,更多相關(guān)Spring版本不一致內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java 反射調(diào)用靜態(tài)方法的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇Java 反射調(diào)用靜態(tài)方法的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06
Java 遞歸查詢部門樹形結(jié)構(gòu)數(shù)據(jù)的實(shí)踐
本文主要介紹了Java 遞歸查詢部門樹形結(jié)構(gòu)數(shù)據(jù)的實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
SpringSecurity角色權(quán)限控制(SpringBoot+SpringSecurity+JWT)
本文主要介紹了SpringSecurity角色權(quán)限控制(SpringBoot+SpringSecurity+JWT),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-05-05
Spring中三種常見(jiàn)Bean的初始化參數(shù)機(jī)制你了解嗎
在Spring框架中,Bean的實(shí)例化與初始化是一個(gè)復(fù)雜的過(guò)程,本文我們主要來(lái)聊一聊它的常見(jiàn)的三種機(jī)制:InitializingBean接口、BeanDefinitionRegistryPostProcessor接口和EnvironmentAware接口,感興趣的小伙伴可以了解下2023-11-11
Spring Boot實(shí)現(xiàn)文件上傳示例代碼
本篇文章主要介紹了Spring Boot實(shí)現(xiàn)文件上傳示例代碼,可以實(shí)現(xiàn)單文件和多文件的上傳,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03
Java中的動(dòng)態(tài)和靜態(tài)編譯實(shí)例詳解
這篇文章主要介紹了Java中的動(dòng)態(tài)和靜態(tài)編譯實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04
SpringBoot實(shí)現(xiàn)垂直分片的六種策略
隨著業(yè)務(wù)規(guī)模的不斷擴(kuò)大,單一數(shù)據(jù)庫(kù)架構(gòu)往往難以滿足日益增長(zhǎng)的數(shù)據(jù)量和訪問(wèn)壓力,作為解決方案之一,垂直分片通過(guò)將不同業(yè)務(wù)模塊的數(shù)據(jù)分散到不同的數(shù)據(jù)庫(kù)或?qū)嵗?本文將介紹在SpringBoot環(huán)境下實(shí)現(xiàn)垂直分片的六種策略,需要的朋友可以參考下2025-06-06
Java?超詳細(xì)講解數(shù)據(jù)結(jié)構(gòu)中的堆的應(yīng)用
堆首先是一個(gè)完全二叉樹,堆分為小根堆和大根堆。小根堆,所有結(jié)點(diǎn)的左右子節(jié)點(diǎn)都不小于根節(jié)點(diǎn);大根堆,所有結(jié)點(diǎn)的左右子節(jié)點(diǎn)都不大于根節(jié)點(diǎn)。優(yōu)先級(jí)隊(duì)列(priorityQueue)底層就是一個(gè)小根堆2022-04-04

