迁移tomcat10 XXX cannot be cast to jakarta.servlet.Filter 解决方案

之前公司有个老项目(struts2+ibatis)的要升级到迁移tomcat10,结果死活无法起来。

看来下日志 报错都是 XXX cannot be cast to jakarta.servlet.Filter,搜了半天终于整出了解决方案。

报错原因是坑爹的tomcat10把javax.servlet-api名叫jaraka.servlet了(这不是蛋疼吗!!!)

解决方案有俩

1.修改代码,手动把包引用从 Javax.XXX改成 Jaraka.XXX 然后编译

2.使用apache官网提供的迁移工具 tomcat-jakartaee-migration 对编译后的项目处理一下,具体使用可以去看下项目的描述,一行命令就可以执行了。

这里提供一个现成的下载

具体使用方法:

如果是linux系统,进入bin目录,bash migrate.sh 旧项目(支持文件夹和war包) 生成的新项目(支持文件夹和war包),例如 bash migrate.sh old.war new.war。

如果是window系统,进入lib目录, java -jar jakartaee-migration-1.0.0.jar old new,跟上面差不多,脚本里就是执行的jakartaee-migration-1.0.0.jar。

ps:如果还不能启动,看看原本项目中pom.xml的javax.servlet-api依赖范围scope是否改成了provided,如果没有还是会有那个报错哦。