Tomcat 版本是 9.0.104。
Java 版本: 1.8.0_121-b13
IntelliJ IDEA 2021.1.3 x64
Tomcat 服务器无法找到以下两个类:
org.springframework.web.context.ContextLoaderListener
org.springframework.web.util.IntrospectorCleanupListener
关于#java#的问题:Tomcat 版本是 9.0.104(相关搜索:服务器)
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
5条回答 默认 最新
nntxthml 2025-04-21 08:59关注这个问题本质上是Spring框架的核心类未正确加载导致的,通常发生在Tomcat部署Spring项目时。我来帮你一步步分析原因和解决方案。
首先需要明确的是,这两个类都属于spring-web模块,ContextLoaderListener是Spring Web应用的启动入口,负责初始化根应用上下文;IntrospectorCleanupListener则是用来清理JavaBeans Introspector缓存的。它们找不到的根本原因就是相关jar包没有正确部署到Tomcat的classpath中。
检查你的项目结构,重点看WEB-INF/lib目录下是否包含spring-web-xxx.jar(xxx对应你的Spring版本)。在IntelliJ IDEA中,需要确保:1)项目使用Maven/Gradle构建时,spring-web依赖的scope应该是compile(默认值);2)使用Artifacts部署时,要把所有依赖库打包进WEB-INF/lib。有个常见陷阱是开发者只在开发依赖中添加了spring-web,但部署配置漏掉了库文件。
对于Maven项目,建议检查pom.xml是否有类似配置:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.3.23</version> <!-- 版本需与其他Spring组件一致 --> </dependency>如果确认依赖配置正确,但问题依旧,可能是IDE的部署配置有问题。在IntelliJ IDEA的Run/Debug Configurations里,检查Tomcat配置的Deployment选项卡,确保"Build Artifact"选择了包含所有依赖的war包。也可以尝试手动把生成的war包解压,检查WEB-INF/lib目录的实际内容。
特殊情况下,如果你使用了Spring Boot,需要注意其内嵌Tomcat机制与传统部署方式的区别。Spring Boot项目应该用spring-boot-starter-web依赖,并通过SpringBootServletInitializer启动,此时不需要手动配置这些Listener。
最后提醒版本兼容性问题:Spring 5.x要求Java 8+,而你的Java 1.8.0_121已经比较旧(2017年版本),建议至少升级到1.8.0_202以上。Tomcat 9.0.x与Spring 5.x是兼容的,但最好保持Spring全家桶版本一致(比如都用5.3.x系列)。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报