spring Boot項目啟動失敗:排查jakarta.servlet.http.HttpSessionContext缺失問題
spring boot項目啟動時,遇到Java.lang.NoClassDefFoundError: jakarta/servlet/http/HttpSessionContext錯誤,導致項目無法啟動。該錯誤表明項目缺少必要的Servlet依賴。HttpSessionContext屬于Jakarta Servlet規范的一部分,Spring Boot的嵌入式服務器(例如jetty)依賴于此規范。
問題根源及解決方法:
錯誤原因在于缺少jakarta.servlet-api依賴。 需要在項目依賴管理配置文件(pom.xml或build.gradle)中添加此依賴。 注意jakarta.servlet-api是javax.servlet-api的后續版本。
maven項目 (pom.xml):
<dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>YOUR_VERSION</version> <scope>provided</scope> </dependency>
Gradle項目 (build.gradle):
implementation("jakarta.servlet:jakarta.servlet-api:YOUR_VERSION")
請將YOUR_VERSION替換為合適的Jakarta Servlet API版本號。 添加依賴后,重新構建并運行項目。provided作用域表示該依賴僅在編譯時需要,運行時由容器(如tomcat或Jetty)提供,避免打包到最終應用中。 如果使用Tomcat,則可能不需要添加此依賴,因為Tomcat已包含Servlet API。
進一步排查:
如果問題仍然存在,請檢查以下幾點:
- 依賴沖突: 檢查項目中是否存在其他依賴與jakarta.servlet-api沖突。可以使用依賴分析工具來查找沖突。
- 緩存清理: 清理項目構建緩存,并重新構建項目。 這有助于解決由于舊的依賴緩存導致的問題。
- 版本兼容性: 確保jakarta.servlet-api版本與其他依賴版本兼容。
通過以上步驟,您應該能夠解決jakarta.servlet.http.HttpSessionContext缺失問題,成功啟動Spring Boot項目。