Apache TomEE 10加载jakarta.servlet.SingleThreadModel类报错求助
jakarta.servlet.SingleThreadModel类找不到的问题 检查TomEE 10容器内置依赖
去TomEE安装目录的lib文件夹下,排查是否存在jakarta.servlet-api的5.x或更低版本jar包。如果有,直接删除该旧版本,替换为项目使用的6.1.0版本。另外TomEE Plus版附带的扩展组件可能依赖旧版servlet API,也需要逐一检查这些组件的依赖情况。排查项目中对该类的直接/间接引用
用IDE全局搜索功能查找项目所有代码(包括第三方依赖jar)中SingleThreadModel的出现位置,定位是哪个类在调用这个已移除的类。如果是第三方依赖导致的,需要将该依赖升级到适配Jakarta Servlet 6.x的版本。调整依赖范围并再次确认传递依赖
确保jakarta.servlet-api的依赖范围设置为provided,避免项目打包时将其带入,与容器提供的版本冲突。Maven配置示例:<dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>6.1.0</version> <scope>provided</scope> </dependency>再用依赖分析命令(Maven执行
mvn dependency:tree,Gradle执行gradle dependencies)彻底排查是否有隐藏的旧版servlet API传递依赖。清理缓存重新构建部署
删除TomEE的work和temp目录,清除容器缓存的旧类文件;同时清理项目的target(Maven)或build(Gradle)目录,重新构建项目后再部署到TomEE。检查TomEE配置文件
查看TomEEconf目录下的catalina.properties等配置文件,确认是否存在指定额外类加载路径、强制加载旧版jar的配置项,若有则修改或移除相关配置。
内容的提问来源于stack exchange,提问作者Himanshu Gupta

