java:程序包javax.servlet.http不存在問題解決
問題描述
當(dāng)項目從2.7.x的springboot升級到3.0.x的時候,遇到一個問題“java: 程序包javax.servlet.http不存在” 。這可能是一些包的精簡變化導(dǎo)致的。錯誤信息如下:
錯誤代碼段
package com.softdev.system.generator.config; import com.softdev.system.generator.entity.ReturnT; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; /** * @author zhengkai.blog.csdn.net */ @ControllerAdvice public class GlobalDefaultExceptionHandler { @ExceptionHandler(Exception.class) @ResponseBody public ReturnT defaultExceptionHandler(HttpServletRequest req, Exception e) { e.printStackTrace(); return ReturnT.error("代碼生成失敗:"+e.getMessage()); } }
解決方案
Maven Repository: jakarta.servlet » jakarta.servlet-api » 6.0.0 (mvnrepository.com)
增加一下依賴即可。
<dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>6.0.0</version> <scope>provided</scope> </dependency>
修改后代碼如下(請注意引用部分)
package com.softdev.system.generator.config; import com.softdev.system.generator.entity.ReturnT; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; import jakarta.servlet.http.HttpServletRequest; /** * @author zhengkai.blog.csdn.net */ @ControllerAdvice public class GlobalDefaultExceptionHandler { @ExceptionHandler(Exception.class) @ResponseBody public ReturnT defaultExceptionHandler(HttpServletRequest req, Exception e) { e.printStackTrace(); return ReturnT.error("代碼生成失敗:"+e.getMessage()); } }
附錄
其實很多教程仍然指向舊版的
Java Servlet is the foundation web specification in the Java Enterprise Platform. Developers can build web applications using the Servlet API to interact with the request/response workflow.
Maven Repository: javax.servlet » javax.servlet-api (mvnrepository.com)
但是新版的話已經(jīng)叫Jakarta Servlet,來自Eclipse基金會,
Maven Repository: jakarta.servlet » jakarta.servlet-api » 6.0.0 (mvnrepository.com)
據(jù)說,racle在19年把javax捐給eclipse基金會,但不允許使用javax的命名空間,所以eclipse才繼續(xù)發(fā)展成現(xiàn)在的javaee標(biāo)準(zhǔn)Jakarta,Jakarta 8與javaee 8只是換了個命名空間,jakarta9才是新的發(fā)展,spring6與spring boot3會采用Jakarta作為新的命名空間。
總結(jié)
到此這篇關(guān)于java:程序包javax.servlet.http不存在問題解決的文章就介紹到這了,更多相關(guān)java:程序包javax.servlet.http不存在內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringCloud+MyBatis分頁處理(前后端分離)
這篇文章主要為大家詳細(xì)介紹了SpringCloud+MyBatis分頁處理,前后端分離,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-10-10vue+springboot+shiro+jwt實現(xiàn)登錄功能
這篇文章主要介紹了vue+springboot+shiro+jwt實現(xiàn)登錄功能,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04Servlet實現(xiàn)共享數(shù)據(jù)JavaWeb組件的幾種方法
本文將結(jié)合實例代碼,介紹Servlet實現(xiàn)共享數(shù)據(jù)JavaWeb組件的幾種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-07-07SpringBoot實現(xiàn)JWT token自動續(xù)期的示例代碼
本文主要介紹了SpringBoot實現(xiàn)JWT token自動續(xù)期的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01