Tomcat10的坑

最近在想複習一下servlet 剛好家裏新買了一臺mac,於是就把所有開發軟件都裝上了最新版。

intellij:2020,JDK:14, Tomcat:10

然後就碰上了Tomcat10這個玩意。

新建了一個Maven項目配置了Tomcat10之後頁面跑起來正常。

一切看起來很Nice

但是!!

在之後我寫servlet之後引入servlet-api 不管是3.0之前的版本還是最新版4.0.1都會報錯。

(解釋一下關於servlet的報名不同: 3.0之前叫servlet-api 3.0之後改名叫Java.servlet-api了)

報錯信息我就不截圖了

大概是:javax.servlet is not cast to jaraka.servlet.

然後再次訪問就變成了404

解決我大半天,下面把我的解決心路歷程記錄下來:

首先排查404的錯誤,我反覆檢查了servlet的配置,也嘗試寫了註解方法請求

都發現沒問題啊。

有時也會報class not found : javax.servlet

然後檢查了引入的dependcy

從4.01改到了3.0,之後設置了dependcy的作用範圍provided:

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>4.0.1</version>
  <scope>provided</scope>
</dependency>

然後就在懷疑maven自動導入的servlet包難道沒有生效嗎

就把maven進來的包各種挪動位置:

這裏:

這裏:

這裏:

 

都試了。都沒用。

要麼404.要麼javax.servlet class is not found 要麼is not cast to jaraka.servlet.

我哭了。

等我去洗個澡回來。

突然醒悟!!

jaraka是個什麼什麼鬼!!!

於是去tomcat10的lib裏面看了一眼servlet-api.jar這個包

這玩意裏面的servlet包名竟然不是叫javax!!是jaraka???

難怪報錯信息是javax.servlet can not cast to jaraka.servlet

ok,找到問題了。

接下去把Tomcat10的servlet-api.jar導入到項目的lib下就OK了:

漂亮!折騰了我滴孃親啊、

或者把整個Tomct10的lib引進來也是可以。

記錄一下記錄一下 用Tomcat10的朋友可以借鑑一下。

如果大佬有更好的辦法也可以指點一下我。

 

-------------------------------------------------

後記:

我把Tomcat換成了9.0.34,maven完美匹配依賴的servlet包,再也不用手動去導包了。

還是Tomcat9舒服~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章