SpringBoot项目找不到javax.servlet.Filter的问题及解决
作者:eknown 发布时间:2022-03-13 10:49:18
SpringBoot找不到javax.servlet.Filter的问题
新创建一个SpringBoot项目,编译时出现了找不到javax.servlet.Filter的异常。
这个类位于tomcat-embed这个jar下面,这里的解决方法并不是像网上大部分所说的手动添加这个jar,因为这是由于没有添加spring-boot-starter-web依赖造成的。
springboot项目默认会添加spring-boot-starter和spring-boot-starter-test两个依赖,而web项目需要spring-boot-starter-web依赖。
下面对比一下spring-boot-starter和spring-boot-starter-web这两个依赖的区别:
spring-boot-starter-web:
spring-boot-starter,没有web:
所以在maven里添加下面这个依赖即可:
<dependencies>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependencies>
启动SpringBoot项目找不到报错
java.lang.ClassNotFoundException: javax.servlet.Filter
出现该问题是因为缺少javax.servlet.Filter的Tomcat-embed-core-xxx.jar包;我们通常使用 spring-boot-starter-web 注入即可。
但是我检查了maven本地仓库中已经有,且项目依赖maven中也存在该包;pom文件也注入了spring-boot-starter-web;编译也通过不报错。但是就是项目启动报错。
经过一番折腾,我仔细对比了pom文件的配置项内容,发现有细小差异;
这是我配置的(有问题的)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
正确的配置(在远程maven仓库中搜索的配置)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>2.3.1.RELEASE</version>
</dependency>
经过对比,发现 <scope>provided</scope> 是导致报错的根源;所以直接删除这个属性;添加版本号属性,重启错误得到解决。
来源:https://eknown.blog.csdn.net/article/details/102789716
猜你喜欢
- 五十七、只针对异常情况才使用异常: 不知道你否则遇见过下面的代码: &
- 问题原因Springboot get请求是参数过长抛出异常:Request header is too large 的问题错误描述java.
- class文件中的常量池之前我们在讲class文件的结构时,提到了每个class文件都有一个常量池,常量池中存了些什么东西呢?字符串常量,类
- 一、准备官网下载IntelliJ IDEA 2017 并安装好下载汉化包 (链接: https://pan.baidu.com/s/1JkU
- springboot整合mybatis实现数据库更新批处理1.在mapper接口中编写方法/** * 修改book表中的销量和库存
- springboot static调用service为null@PostConstruct注解好多人以为是Spring提供的。其实是Java
- 前言:本质上来说,CoreCLR 也是 C++ 写的,所以也逃不过用 虚表 来实现多态的玩法, 不过玩法也稍微复杂了一些,希望本篇对大家有帮
- 资源下载:点此下载一、语言和环境1.实现语言: JAVA语言。2.环境要求: MyEclipse/Eclipse + Tomcat + My
- 话不多说,跟着小编一起来看下吧using System;using System.Collections.Generic;using Sys
- 一、思路1.定义一个toFind变量来传入要查找的元素2.遍历整个顺序表并判定当前下标的元素等不等于toFind3.如果等于就返回一个tru
- preHandle: 预先处理,在目标的controller方法执行之前,进行处理postHandle: 在目标的con
- 前言在实际开发中我们经常会与时间打交道,那这就会涉及到一个时间格式转换的问题。接下来会介绍几种在SpirngBoot中如何对时间格式进行转换
- 泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把
- 需求:键盘录入一个月份,输出该月份对应的季节。一年有四季3,4,5 春季6,7,8 夏季9,
- C#将对象序列化成JSON字符串public string GetJsonString() { List<Product> p
- 今天接触了一下ToStringBuilder类,这里做一个备忘。ToStringBuilder在包 common-lang 中,主要用于一个
- 本文实例讲述了Java基于分治法实现的快速排序算法。分享给大家供大家参考,具体如下:package cn.nwsuaf.quick;/**
- 本文我想跟大家分享的是如何将 C# 中的一些图像对象保存到 Oracle 中的 BLOB 字段中,这里我们并不想从零开始,而是使用我自己的框
- 提到类型转换,首先要明确C#中的数据类型,主要分为值类型和引用类型:1.常用的值类型有:(struct)整型家族:int,byte,char
- Java常用API介绍API概念什么是API?API(Application Programming interface) 应用程序编程接口