入門servlet前先準備好了Tomcat環境以及用Idea打了一個Servlet war包想看看效果,結果發現頁面跳轉一直報404錯誤,檢查了跳轉url,專案結構等情況後,問題依舊沒有解決。最後偶然在網上看到了相關資訊後終於找到問題原因。
原因
一直沒有關注Java EE相關更新新聞,查詢後才明白Servlet5.0已經將包名稱空間從javax
變成了jakarta
,這就導致如果Tomcat裡Servlex版本如果是最新版,而本地編譯環境是早期版本,那麼Tomcat解war包後程式無法正確通過import
找到相關jar包。
解決方法
-
首先檢查Servlet版本是否相同。
-
本地編譯依賴環境可以直接開啟pom.xml檢視為4.0。
-
Tomcat則需要先解壓以下檔案
${baseDir}\apache-tomcat-10.0.16\lib\servlet-api.jar
,然後檢視META-INF
資料夾下的MANIFEST.MF
,可以看出版本為5.0。
-
修改pom.xml的Servlet依賴,改成5.0即可。
<dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>5.0.0</version> <scope>provided</scope> </dependency>
-