Spring解決依賴版本不一致報錯問題
問題描述
報錯信息如下
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
報錯描述
試圖從以下位置去調(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é)構是從以下位置加載的:
javax.servlet.ServletContext: file:/E:/.m2/repository/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar
更正應用程序的類路徑,使其包含一個單獨的兼容版本的javax.servlet.ServletContext。
上邊的解釋說人話就是servlet-api和jakarta.servlet-api下的 ServletContext.class 沖突了,需要修改一下版本依賴。
解決方法
首先打開IDEA的 setting 設置
然后選擇 Plugins 插件,下載Maven Helper
插件,如果安裝之后不生效,可以重啟一下 IDEA
最后打開 pom.xml 文件,選擇 Dependency Analyzer
切換頁,選擇 All Dependencies as Tree
選項,然后搜索 javax
,然后右鍵選擇 Exclude
排除重復依賴就可以了。
點完之后會發(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>
如果排除之后依然報錯,可以選擇上圖的Jump To Source
跳轉(zhuǎn)到對應的倉庫內(nèi)將對應版本刪除即可。
刷新下依賴,發(fā)現(xiàn)正常啟動了,搞定。
總結(jié)
以后再遇到這種包依賴沖突的問題都可以使用Maven Helper
這個插件來輕松解決,媽媽再也不用擔心我的學習了。
到此這篇關于Spring解決依賴版本不一致報錯問題的文章就介紹到這了,更多相關Spring版本不一致內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Springboot?配置SqlSessionFactory方式
這篇文章主要介紹了Springboot?配置SqlSessionFactory方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12spring?boot項目自定義參數(shù)校驗規(guī)則示例詳解
這篇文章主要介紹了spring boot項目如何自定義參數(shù)校驗規(guī)則,自定義校驗規(guī)則和自帶的規(guī)則實現(xiàn)方式一樣,先自定義一個注解,然后指定校驗類,在校驗類里實現(xiàn)具體的校驗規(guī)則,本文結(jié)合示例代碼給大家介紹的非常詳細,需要的朋友可以參考下2023-07-07如何使用IDEA查看java文件編譯后的字節(jié)碼內(nèi)容
這篇文章主要介紹了如何使用IDEA查看java文件編譯后的字節(jié)碼內(nèi)容,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03SpringCloud注冊中心之consul詳細講解使用方法
Consul是一款由HashiCorp公司開源的,用于服務治理的軟件,Spring Cloud Consul對其進行了封裝,這篇文章主要介紹了springcloud組件consul服務治理,需要的朋友可以參考下2022-11-11FP-Growth算法的Java實現(xiàn)+具體實現(xiàn)思路+代碼
FP-Growth算法比Apriori算法快很多(但是卻比不上時間,how time slipped away)。在網(wǎng)上搜索后發(fā)現(xiàn)Java實現(xiàn)的FP-Growth算法很少,且大多數(shù)不太能理解):太菜。所以就自己實現(xiàn)了一下。這篇文章重點介紹一下我的Java實現(xiàn)2021-06-06在Java中實現(xiàn)讓線程按照自己指定的順序執(zhí)行
這篇文章主要介紹了在Java中實現(xiàn)讓線程按照自己指定的順序執(zhí)行,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06