SpringBoot項目找不到javax.servlet.Filter的問題及解決
SpringBoot找不到javax.servlet.Filter的問題
新創(chuàng)建一個SpringBoot項目,編譯時出現了找不到javax.servlet.Filter的異常。

這個類位于tomcat-embed這個jar下面,這里的解決方法并不是像網上大部分所說的手動添加這個jar,因為這是由于沒有添加spring-boot-starter-web依賴造成的。
springboot項目默認會添加spring-boot-starter和spring-boot-starter-test兩個依賴,而web項目需要spring-boot-starter-web依賴。
下面對比一下spring-boot-starter和spring-boot-starter-web這兩個依賴的區(qū)別:
spring-boot-starter-web:

spring-boot-starter,沒有web:

所以在maven里添加下面這個依賴即可:
<dependencies> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependencies>
啟動SpringBoot項目找不到報錯
java.lang.ClassNotFoundException: javax.servlet.Filter
出現該問題是因為缺少javax.servlet.Filter的Tomcat-embed-core-xxx.jar包;我們通常使用 spring-boot-starter-web 注入即可。

但是我檢查了maven本地倉庫中已經有,且項目依賴maven中也存在該包;pom文件也注入了spring-boot-starter-web;編譯也通過不報錯。但是就是項目啟動報錯。
經過一番折騰,我仔細對比了pom文件的配置項內容,發(fā)現有細小差異;
這是我配置的(有問題的)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>正確的配置(在遠程maven倉庫中搜索的配置)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>2.3.1.RELEASE</version>
</dependency>
經過對比,發(fā)現 <scope>provided</scope> 是導致報錯的根源;所以直接刪除這個屬性;添加版本號屬性,重啟錯誤得到解決。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- SpringBoot集成WebServlet出現自定義servlet請求失敗的問題解決方案
- SpringBoot里使用Servlet進行請求的實現示例
- springboot掃描自定義的servlet和filter代碼詳解
- Springboot注入成員變量HttpServletRequest的原理分析
- SpringBoot3.1.2 引入Swagger報錯Type javax.servlet.http.HttpServletRequest not present解決辦法
- 解決IDEA啟動springboot項目報錯java.lang.ClassNotFoundException:?javax.servlet.ServletContext
- SpringBoot獲取HttpServletRequest的3種方式總結
- Springboot如何添加server.servlet.context-path相關使用
- SpringBoot如何切換成其它的嵌入式Servlet容器(Jetty和Undertow)
相關文章
關于JDK15的新特性之TextBlocks文本塊的引入和使用
這篇文章主要介紹了關于JDK15的新特性之文本塊的引入和使用,如果具有一種語言學機制,可以比多行文字更直觀地表示字符串,而且可以跨越多行,而且不會出現轉義的視覺混亂,那么這將提高廣泛Java類程序的可讀性和可寫性,需要的朋友可以參考下2023-07-07
SpringBoot 配合 SpringSecurity 實現自動登錄功能的代碼
這篇文章主要介紹了SpringBoot 配合 SpringSecurity 實現自動登錄功能的代碼,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09

