IDEA报错java.lang.ClassNotFoundException: javax.servlet.Filter

本文详细解析了在IDEA中遇到java.lang.ClassNotFoundException: javax.servlet.Filter错误的原因,并提供了具体的解决方案。通过调整Maven依赖配置,包括spring-boot-starter-tomcat和javax.servlet-api的版本与作用范围,有效避免了此类错误的发生。

IDEA报错java.lang.ClassNotFoundException: javax.servlet.Filter

 

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<!-- provided 表明该包只在编译和测试的时候使用,去除默认的tomcat -->
			<!--<scope>provided</scope>-->
			<version>1.2.4.RELEASE</version>
			<scope>compile</scope>
		</dependency>
<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
		</dependency>

 

HTTP状态 500 - 内部服务器错误 类型 异常报告 消息 java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.view.jsp.business.security.login_005fother_jsp 描述 服务器遇到一个意外的情况,阻止它完成请求。 例外情况 org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.view.jsp.business.security.login_005fother_jsp org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:198) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:414) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238) org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262) org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1180) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 根本原因。 java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.view.jsp.business.security.login_005fother_jsp java.net.URLClassLoader.findClass(URLClassLoader.java:382) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:132) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:63) org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:193) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:414) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238) org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262) org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1180) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) ):注意 主要问题的全部 stack 信息可以在 server logs 里查看 Apache Tomcat/7.0.109
10-15
AI已准备就绪,请打开课程页 . . . 视频倍速 跳转模式 自动答题 操作说明 · 当前版本仅支持部分学习平台的网页部分内容辅助学习,其他在陆续适配,敬请期待 · 建议在 Edge 浏览器或 Chrome 浏览器中安装使用,其他浏览器可能存在兼容问题 · 打开某章节后,插件将自动开始执行任务(会显示进行中字样) · 不支持多开,新开一个章节后会停止当前任务 · 运行该插件必须关闭其他插件,否则可能运行异常 · 如需设置更改功能,请点击右上角“齿轮”图标,自行调整 · 不建议开倍速进行,可能会导致学习进度清零 如有问题,请进群咨询 聊天历史记录 暂无会话历史记录哦~ 打开大学搜题酱APP在 「我的」页 点击「电脑端扫码」 下载大学搜题酱App 帮助 HTTP状态 500 - 内部服务器错误 类型 异常报告 消息 org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.home_jsp 描述 服务器遇到一个意外的情况,阻止它完成请求。 例外情况 org.apache.jasper.JasperException: org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.home_jsp org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:589) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:425) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:376) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:324) javax.servlet.http.HttpServlet.service(HttpServlet.java:623) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:115) 根本原因。 org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.home_jsp org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:197) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:413) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:376) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:324) javax.servlet.http.HttpServlet.service(HttpServlet.java:623) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:115) 根本原因。 java.lang.ClassNotFoundException: org.apache.jsp.home_jsp java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:129) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:58) org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:192) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:413) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:376) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:324) javax.servlet.http.HttpServlet.service(HttpServlet.java:623) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:115) ):注意 主要问题的全部 stack 信息可以在 server logs 里查看 Apache Tomcat/9.0.98
最新发布
12-01
Java Web 应用中出现 `java.lang.ClassNotFoundException: javax.servlet.Filter` 通常表明应用在运行时无法找到 `javax.servlet.Filter` 类。这可能是由于依赖缺失、依赖作用域配置错误或项目配置不正确导致的。 以下是解决此问题的几个方向: ### 1. 确保正确引入 Servlet API 依赖 如果项目使用 Maven 管理依赖,需要在 `pom.xml` 中确保 `javax.servlet-api` 被正确引入。对于使用 Servlet 3.1 的项目,可以添加以下依赖: ```xml <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> ``` 如果使用的是 Jakarta EE(如 Jakarta Servlet 5.0),则应使用: ```xml <dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>5.0.0</version> <scope>provided</scope> </dependency> ``` 依赖的 `scope` 设置为 `provided` 表示该依赖在编译和测试阶段有效,但在运行时由容器(如 Tomcat)提供 [^3]。 --- ### 2. 检查 Spring Boot 项目中的 Tomcat 依赖作用域 在 Spring Boot 项目中,如果手动更改了 `spring-boot-starter-tomcat` 的作用域为 `provided`,可能会导致运行时缺少必要的类库。为解决此问题,可以将作用域设置为 `compile`: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>compile</scope> </dependency> ``` 此更改确保 Tomcat 依赖在运行时被包含在应用中,而不是依赖外部容器提供 [^5]。 --- ### 3. 确保 IDE 配置与构建配置一致 如果项目在 IDE(如 IntelliJ IDEA)中运行失败,但通过 Maven 打包后运行正常,可能是 IDE 的运行时类路径配置不正确。此时需要检查 IDE 的运行配置是否正确,并确保其使用的类路径与构建工具(如 Maven)一致 [^3]。 --- ### 4. 使用正确的 JDK 版本 某些类(如 `javax.xml.bind` 相关类)在 JDK 9 及以上版本中被移除,因此如果项目依赖这些类,需要手动添加对应的依赖。虽然 `javax.servlet.Filter` 不属于此类,但如果项目依赖的其他库需要旧版本的 JDK 功能,也可能导致类加载失败 [^4]。 --- ### 5. 清理并重新构建项目 如果依赖配置正确但仍出现问题,可以尝试清理并重新构建项目。在 Maven 中可以使用以下命令: ```bash mvn clean install ``` 然后重新启动应用,确保所有依赖正确加载 [^1]。 --- ### 6. 检查运行时环境 如果应用部署在外部容器(如 Tomcat)中,需要确保容器的版本与项目使用的 Servlet 规范兼容。例如,Tomcat 9 支持 Servlet 4.0,而 Tomcat 8 支持 Servlet 3.1。如果容器版本过低,可能导致某些类无法找到 [^2]。 --- ### 总结 解决 `java.lang.ClassNotFoundException: javax.servlet.Filter` 的关键在于确保依赖配置正确、运行时类路径完整,并且与开发环境和构建工具保持一致。根据项目类型和部署方式,调整依赖作用域和引入合适的 API 是解决问题的核心步骤。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值