• 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:

    
      javax.servlet
      javax.servlet-api
      4.0.1
      provided
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    然后就在怀疑maven自动导入的servlet包难道没有生效吗

    就把maven进来的包各种挪动位置:

    这里:

    这里:

    这里:

    都试了。都没用。

    要么404.要么javax.servletclass 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舒服~

  • 相关阅读:
    keycloak~AbstractJsonUserAttributeMapper的作用
    力扣第347题 堆(优先队列) 经典题 c++ 简易注释版 附(相关知识点解答)
    POST注入 | 盲注 | 宽字节注入
    SpringBoot配置文件的加载顺序
    【数据结构与算法】不就是数据结构
    直播APP的优势
    electron安装失败时配置
    网易云音乐、将某个歌单的所有音乐迁移(复制)到另一个歌单 ,以“我喜欢的音乐”为例
    在vscode 中使用npm的问题
    基础SQL 函数
  • 原文地址:https://blog.csdn.net/m0_67393828/article/details/126516821