Spring解決依賴版本不一致報(bào)錯問題
問題描述
報(bào)錯信息如下
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)錯描述
試圖從以下位置去調(diào)用一個不存在的方法:
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)用程序的類路徑,使其包含一個單獨(dú)的兼容版本的javax.servlet.ServletContext。
上邊的解釋說人話就是servlet-api和jakarta.servlet-api下的 ServletContext.class 沖突了,需要修改一下版本依賴。
解決方法
首先打開IDEA的 setting 設(shè)置

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

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

點(diǎn)完之后會發(fā)現(xiàn) pom.xml 文件中會出現(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)錯,可以選擇上圖的Jump To Source跳轉(zhuǎn)到對應(yīng)的倉庫內(nèi)將對應(yīng)版本刪除即可。
刷新下依賴,發(fā)現(xiàn)正常啟動了,搞定。
總結(jié)
以后再遇到這種包依賴沖突的問題都可以使用Maven Helper這個插件來輕松解決,媽媽再也不用擔(dān)心我的學(xué)習(xí)了。
到此這篇關(guān)于Spring解決依賴版本不一致報(bào)錯問題的文章就介紹到這了,更多相關(guān)Spring版本不一致內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java中try-catch的使用及注意細(xì)節(jié)
現(xiàn)在有很多的語言都支持try-catch,比如常見的就是c++,java等,這篇文章主要給大家介紹了關(guān)于Java中try-catch的使用及注意細(xì)節(jié)的相關(guān)資料,文中通過圖文以及實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
Springboot?配置SqlSessionFactory方式
這篇文章主要介紹了Springboot?配置SqlSessionFactory方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
spring?boot項(xiàng)目自定義參數(shù)校驗(yàn)規(guī)則示例詳解
這篇文章主要介紹了spring boot項(xiàng)目如何自定義參數(shù)校驗(yàn)規(guī)則,自定義校驗(yàn)規(guī)則和自帶的規(guī)則實(shí)現(xiàn)方式一樣,先自定義一個注解,然后指定校驗(yàn)類,在校驗(yàn)類里實(shí)現(xiàn)具體的校驗(yàn)規(guī)則,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07
如何使用IDEA查看java文件編譯后的字節(jié)碼內(nèi)容
這篇文章主要介紹了如何使用IDEA查看java文件編譯后的字節(jié)碼內(nèi)容,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
SpringCloud注冊中心之consul詳細(xì)講解使用方法
Consul是一款由HashiCorp公司開源的,用于服務(wù)治理的軟件,Spring Cloud Consul對其進(jìn)行了封裝,這篇文章主要介紹了springcloud組件consul服務(wù)治理,需要的朋友可以參考下2022-11-11
FP-Growth算法的Java實(shí)現(xiàn)+具體實(shí)現(xiàn)思路+代碼
FP-Growth算法比Apriori算法快很多(但是卻比不上時間,how time slipped away)。在網(wǎng)上搜索后發(fā)現(xiàn)Java實(shí)現(xiàn)的FP-Growth算法很少,且大多數(shù)不太能理解):太菜。所以就自己實(shí)現(xiàn)了一下。這篇文章重點(diǎn)介紹一下我的Java實(shí)現(xiàn)2021-06-06
在Java中實(shí)現(xiàn)讓線程按照自己指定的順序執(zhí)行
這篇文章主要介紹了在Java中實(shí)現(xiàn)讓線程按照自己指定的順序執(zhí)行,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06

