Java17和springboot3.0使用shiro報(bào)ClassNotFoundException的解決
環(huán)境:
- springboot 3.0.6
- java17
報(bào)錯(cuò)信息:java.lang.ClassNotFoundException: javax.servlet.Filter
當(dāng)我看到j(luò)avax時(shí),估摸著應(yīng)該是部分類庫(kù)遷移到了jakarta造成的,但也不知道咋解決,最后在StackOverflow看到一篇回答,恍然大悟。
翻譯如下:
由于Spring Boot 3.0 使用了Servlet 5.0,而javax.servlet此時(shí)已經(jīng)遷移到了jakarta.servlet中。Shiro已經(jīng)提供了適配Servlet 5.0 的依賴包,使用<classifier>標(biāo)簽即可選取適配版本,不過部分Shiro包中仍嵌套依賴了一些沒有適配jakarta的依賴包,所以我們需要使用<exclude>將其排除,再引入同版本的jakarta適配包,就像這樣做:
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<classifier>jakarta</classifier>
<version>1.11.0</version>
<!-- 排除仍使用了javax.servlet的依賴 -->
<exclusions>
<exclusion>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 引入適配jakarta的依賴包 -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<classifier>jakarta</classifier>
<version>1.11.0</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
<classifier>jakarta</classifier>
<version>1.11.0</version>
<exclusions>
<exclusion>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
</exclusion>
</exclusions>
</dependency>到此這篇關(guān)于Java17和springboot3.0使用shiro報(bào)ClassNotFoundException的解決的文章就介紹到這了,更多相關(guān)shiro報(bào)ClassNotFoundException內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在Java中使用ModelMapper簡(jiǎn)化Shapefile屬性轉(zhuǎn)JavaBean實(shí)戰(zhàn)過程
本文介紹了在Java中使用ModelMapper庫(kù)簡(jiǎn)化Shapefile屬性轉(zhuǎn)JavaBean的過程,對(duì)比了原始的set方法和構(gòu)造方法,展示了如何使用ModelMapper進(jìn)行動(dòng)態(tài)屬性映射,從而減少手動(dòng)編寫轉(zhuǎn)換代碼的工作量,通過示例代碼,展示了如何使用GeoTools讀取Shapefile屬性并將其轉(zhuǎn)換為JavaBean對(duì)象2025-02-02
java校驗(yàn)String是否符合時(shí)間格式y(tǒng)yyy-MM-dd?HH:mm:ss的幾種方法
在實(shí)際項(xiàng)目開發(fā)中,跟時(shí)間參數(shù)打交道是必不可少的,為了保證程序的安全性、健壯性,一般都會(huì)對(duì)參數(shù)進(jìn)行校驗(yàn),這篇文章主要介紹了java校驗(yàn)String是否符合時(shí)間格式y(tǒng)yyy-MM-dd?HH:mm:ss的幾種方法,需要的朋友可以參考下2025-07-07
微服務(wù)如何通過feign.RequestInterceptor傳遞參數(shù)
這篇文章主要介紹了微服務(wù)如何通過feign.RequestInterceptor傳遞參數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
mybatis嵌套循環(huán)map方式(高級(jí)用法)
這篇文章主要介紹了mybatis嵌套循環(huán)map方式(高級(jí)用法),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
在?Spring?Boot?中連接?MySQL?數(shù)據(jù)庫(kù)的詳細(xì)步驟
本文介紹了SpringBoot連接MySQL數(shù)據(jù)庫(kù)的流程,添加依賴、配置連接信息、創(chuàng)建實(shí)體類與倉(cāng)庫(kù)接口,通過自動(dòng)配置實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作,并提供API測(cè)試方法及常見問題解決方案,感興趣的朋友跟隨小編一起看看吧2025-08-08
java連接池Druid連接回收DestroyConnectionThread&DestroyTask
這篇文章主要為大家介紹了java連接池Druid連接回收DestroyConnectionThread&DestroyTask示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
SpringMvc/SpringBoot HTTP通信加解密的實(shí)現(xiàn)
這篇文章主要介紹了SpringMvc/SpringBoot HTTP通信加解密的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Java數(shù)據(jù)結(jié)構(gòu)之復(fù)雜度篇
算法復(fù)雜度分為時(shí)間復(fù)雜度和空間復(fù)雜度。其作用:?時(shí)間復(fù)雜度是度量算法執(zhí)行的時(shí)間長(zhǎng)短;而空間復(fù)雜度是度量算法所需存儲(chǔ)空間的大小2022-01-01

