springboot war包tomcat中运行报错,启动过滤器异常,一个或多个筛选器启动失败。

错误信息:
                    "level": "ERROR",
                    "thread": "localhost-startStop-1",
                    "class": "o.a.c.c.C.[.[localhost].[/Crmeb-admin]",
                    "message": "启动过滤器异常" }

java.lang.AbstractMethodError: null
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:109)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4608)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5258)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1427)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1417)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

springboot项目我碰到的问题是jar包运行没错,war包tomcat中运行报这个错误。

可以在tomcat/logs/localhostxxx.log日志文件中找到是哪些过滤器问题。

原因一:

首先确定springboot的版本和对应的内置tomcat版本,是否与下载的tomcat版本一样(一般大版本相同即可),因为不同版本的servlet-api存在兼容问题,下面是servlet与tomcat的版本关系图:

Servlet SpecJSP SpecEL SpecWebSocket SpecApache Tomcat versionActual release revisionSupport Java Versions
4.0TBD (2.4?)TBD (3.1?)TBD (1.2?)9.0.xNone8 and later
3.12.33.01.18.0.x8.0.157 and later
3.02.22.21.17.0.x7.0.576 and later
(WebSocket 1.1 requires 7 or later)
2.52.12.1N/A6.0.x6.0.435 and later
2.42.0N/AN/A5.5.x (archived)5.5.36 (archived)1.4 and later
2.31.2N/AN/A4.1.x (archived)4.1.40 (archived)1.3 and later
2.21.1N/AN/A3.3.x (archived)3.3.2 (archived)1.1 and later

 

servlet-api.jar中的Filter接口各版本由差异:

        1.早期版本中filter接口的init()、 destroy()方法是普通方法,子类必须实现。

        2.中期的init()、 destroy()方法是默认方法,有方法体,子类可不实现。

        3.最新版的包名由原来的javax.servlet.xx变成了jakarta.servlet.xx

如果跟tomca/lib/servlet-api.jar不兼容的话就会导致过滤器启动失败、classNotFound、classCast等错误。

原因二:

        jar没有打到war中或者java文件没有编译到classs下,可以打开war包看看里面的lib、classs目录是否缺失文件。

原因三:Springboot版本与tomcat版本的兼容问题

  1. Spring Boot 2.x系列

    • Spring Boot 2.x从2.0.x开始默认集成了Tomcat 8.5.x。
    • 2.1.x引入了对Tomcat 9.1的支持。
    • 2.2.x继续支持Tomcat 9.1,并且兼容Tomcat 9.2。
    • 2.3.x及更高版本则默认集成了Tomcat 9.0.53或更高版本。
  2. Spring Boot 3.x系列

    • Spring Boot 3.x从3.0.x开始默认集成了Tomcat 10.x。
    • 具体来说,3.0.x及以上版本默认使用Tomcat 10.x,而早期版本如2.7.x则可能使用Tomcat 9.0.53或更高版本。
  3. 版本兼容性问题

    • 如果Spring Boot与Tomcat版本不匹配,可能会导致启动失败或运行时错误。例如,Spring Boot尝试调用Tomcat中不存在的方法时,会导致NoSuchMethodError错误。
    • 因此,开发者需要确保Spring Boot和Tomcat的版本兼容。如果需要修改内置Tomcat的版本,可以通过修改pom.xml文件中的<tomcat.version>属性来实现

首先需要查看自己的Springboot项目版本

eclipse中选中项目右键选中Properties,然后找到Libraries选项,打开Maven Dependencies,找到Springboot版本,我的是2.2.6版本的。Springboot2.2.6版本的默认对应的tomcat版本为9.0.33。

 

原因4:过滤器代码问题

 

原因分析:过滤器找不到tokenComponent绑定,其实就是@Resource注解没有把这个注入,而导致过滤器启动失败,改成@Autowired注入即可。

为什么其他service、controller中没问题呢?因为web应用启动的顺序有关:listener->filter->servlet,filter先于servlet启动。而@Autowired可以@Resource不可以,请自行去了解二者的区别。

经过多次查找,本人的问题是由于原因三和四同时引起的,文中有些内容也是网上查找的,希望能对有同样问题的小伙伴有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/79000.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cursor —— AI编辑器 使用详解

Cursor - The AI Code Editor 一、Cursor 是什么&#xff1f; Cursor 是一款优秀的AI代码编辑器&#xff0c;它内置了 Deepseek-R1、GPT-4、Claude等 AI 模型。 简单说&#xff0c;就是&#xff1a;Cursor VS Code 编辑器 AI 大模型 Cursor 功能特性&#xff08;代码补全、…

在Excel图表添加辅助线

前言&#xff1a;博主最近是有点忙&#xff0c;好吧&#xff0c;就是很忙&#xff0c;但我也不想水文章的&#xff0c;每一篇文章都是本人精心编辑&#xff0c;觉得对大家有用才发布的。而且同一个类型的文章&#xff0c;我基本都会写在同一篇中方便大家集中获取。本来这篇文章…

2025.5.8总结(中期审视)

今日记录&#xff1a; 晚上&#xff0c;主管找我聊了关于中期绩效审视的问题。 首先就是让我汇报上半年的工作进展&#xff0c;汇报完后&#xff0c;感觉体现不出自己的工作量&#xff0c;这确实考验个人的汇报能力。 汇报完工作后&#xff0c;主管开始给我提了一些建设性的…

Excel模版下载文件导入

工作中经常遇到Excel模板下载&#xff0c;然后填好后再导入的情况&#xff0c;简单记录下&#xff0c;方便下次使用 Excel模版下载&#xff08;返回Base64&#xff09; 模板文件存放位置 import java.util.Base64; import org.apache.commons.io.IOUtils; import org.sprin…

SpringBoot 讯飞星火AI WebFlux流式接口返回 异步返回 对接AI大模型 人工智能接口返回

介绍 用于构建基于 WebFlux 的响应式 Web 应用程序。集成了 Spring WebFlux 模块&#xff0c;支持响应式编程模型&#xff0c;构建非阻塞、异步的 Web 应用。WebFlux 使用了非阻塞的异步模型&#xff0c;能够更好地处理高并发请求。适合需要实时数据推送的应用场景。 WebClie…

模拟Sch LVS Sch 方法

Step1&#xff1a;打开calibre 打开一个terminal&#xff0c;进到想要做lvs的路径&#xff1a; 在terminal 敲入calibre -gui&#xff0c;产生calibre 界面 点击nmLVS&#xff0c;产生calibre LVS界面 Step2&#xff1a;LVS 界面设置1 LVS rules file&#xff1a;加载lvs规…

注解的定义

一、理论说明 1. 注解的定义 Java 注解是从 JDK 5.0 开始引入的一种元数据机制&#xff0c;它可以为代码添加额外的信息&#xff0c;这些信息不影响程序的运行逻辑&#xff0c;但可以在编译期、类加载期或运行期被读取和处理。注解本质上是一种特殊的接口&#xff0c;所有注解…

面试实践AND面经热点题目总结

1、对于Rocketmq消息积压、丢失如何解决&#xff1f; 消息积压原因以及解决方案 &#x1f3af; 产生原因&#xff1a; 消费者处理能力弱&#xff0c;消费速度远低于生产速度&#xff1b; 网络不稳定&#xff0c;消费者拉取消息失败&#xff1b; 消费端异常&#xff08;如处理…

【KWDB 创作者计划】使用Docker实现KWDB数据库的快速部署与配置

【KWDB 创作者计划】使用Docker实现KWDB数据库的快速部署与配置 前言一、KWDB介绍1.1 KWDB简介1.2 主要特点1.3 典型应用场景 二、环境介绍2.1 部署环境要求2.2 本地环境规划2.3 部署模式 三、部署Docker环境3.1 安装相关工具3.2 配置Docker软件源3.3 更新软件源3.4 安装Docker…

JWT深度解析:现代Web身份验证的通行证-优雅草卓伊凡

# JWT深度解析&#xff1a;现代Web身份验证的通行证 ## 一、JWT的本质与构成 ### 1.1 JWT的定义解析 JWT&#xff08;JSON Web Token&#xff09;是一种**开放标准&#xff08;RFC 7519&#xff09;**&#xff0c;用于在各方之间安全地传输信息作为JSON对象。这种信息可以被…

前端缓存踩坑指南:如何优雅地解决浏览器缓存问题?

浏览器缓存&#xff0c;配置得当&#xff0c;它能让页面飞起来&#xff1b;配置错了&#xff0c;一次小小的上线&#xff0c;就能把你扔进线上 bug 的坑里。你可能遇到过这些情况&#xff1a; 部署上线了&#xff0c;结果用户还在加载旧的 JS&#xff1b;接口数据改了&#xf…

2022年8月,​韩先超对中移信息进行微服务架构原理(Docker+k8s+DevOps+Go等)培训

2022年8月&#xff0c;​韩先超对中移信息进行微服务架构原理&#xff08;Dockerk8sDevOpsGo等&#xff09;培训 2022年8月&#xff0c;在企业数字化转型和云原生架构加速演进的背景下&#xff0c; 中移信息技术有限公司特别邀请云原生与DevOps领域专家 韩先超老师&#xff0c…

ComfyUI 学习笔记,案例 6 :FLUX 模型文生图

背景 刚开始了解 Comfy UI 的时候&#xff0c;随便找了一个资料&#xff0c;对着这篇 《Flux在ComfyUI里的下载与安装》 进行操作的&#xff0c;下载了这里面的模型到本机。 玩了几天&#xff0c;大概对 ComfyUI 有了一点了解&#xff0c;知道了 Flux 这是一个模型&#xff0…

Docker + Watchtower 实现容器自动更新:高效运维的终极方案

文章目录 前言一、Watchtower 简介二、Watchtower 安装与基本使用1. 快速安装 Watchtower2. 监控特定容器 三、Watchtower 高级配置1. 设置检查间隔2. 配置更新策略3. 清理旧镜像4. 通知设置 四、生产环境最佳实践1. 使用标签控制更新2. 更新前执行健康检查3. 结合CI/CD流水线 …

从易发性分析到灾后规划,AI大模型如何颠覆传统地质灾害防治?

地质灾害是指全球地壳自然地质演化过程中&#xff0c;由于地球内动力、外动力或者人为地质动力作用下导致的自然地质和人类的自然灾害突发事件。在降水、地震等自然诱因的作用下&#xff0c;地质灾害在全球范围内频繁发生。我国不仅常见滑坡灾害&#xff0c;还包括崩塌、泥石流…

第37次CCF第三题--模板展开--stringstream读取字符串

1 a hello 1 b world 2 c $a $b 1 d good $c 1 a hi 1 e good $c1 a hello 1 b world 2 c $a $b 3 c 1 a hi 3 c将会输出&#xff1a;10 和 7&#xff0c;对应的变量的值为&#xff1a; helloworld hiworld 需要注意的是&#xff0c;在使用间接赋值语句时&#xff0c;在变量的…

深度学习:智能车牌识别系统(python)

这是一个基于opencv的智能车牌识别系统,有GUI界面。程序能自动识别图片中的车牌号码,并支持中文和英文字符识别,支持选择本地图片文件,支持多种图片格式(jpg、jpeg、png、bmp、gif)。 下面,我将按模块功能对代码进行分段说明: 1. 导入模块部分 import tkinter as tk…

Missashe考研日记-day35

Missashe考研日记-day35 1 专业课408 学习时间&#xff1a;3h学习内容&#xff1a; 完结撒花&#xff01;&#xff01;今天把OS最后一节的内容学完了&#xff0c;操作系统也算是告一段落了&#xff0c;接下来是计网时间&#xff01;不过计网我是上学期才学过的&#xff0c;当…

【Bootstrap V4系列】学习入门教程之 组件-下拉菜单(Dropdowns)

Bootstrap V4系列 学习入门教程之 组件-下拉菜单&#xff08;Dropdowns&#xff09; 下拉菜单&#xff08;Dropdowns&#xff09;一、Overview 概述二、Accessibility 可访问性三、Examples3.1 Single button 单按钮3.2 Split button 分割按钮 四、Sizing 尺寸 下拉菜单&#x…

红外遥控与NEC编码协议详解

在我们日常生活中&#xff0c;电视遥控器、空调遥控器、风扇遥控器&#xff0c;几乎都离不开“红外遥控”这项技术。虽然我们每天都在用&#xff0c;但你知道里面是怎么通信的吗&#xff1f;本篇文章将带你了解红外遥控的工作原理&#xff0c;重点解析目前应用最广泛的红外编码…