Tomcat 9启动时出现ClassNotFoundException问题求助
问题描述
在Eclipse中启动Tomcat 9服务器运行Spring Web应用时,抛出以下3个类的ClassNotFoundException:
org.springframework.web.context.ContextLoaderListenerorg.springframework.web.context.request.RequestContextListenerorg.springframework.security.web.session.HttpSessionEventPublisher
已尝试以下操作但问题未解决:
- 清理Tomcat构建目录并执行项目clean操作
- 使用服务器的「Add and Remove」功能重新部署应用
解决方案
1. 确认项目依赖完整性与部署范围
检查你的项目构建文件(Maven的pom.xml或Gradle的build.gradle),确保包含对应依赖且部署范围正确:
- Spring Web依赖(对应前两个Listener):
Maven配置:
Gradle配置:<dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>你的Spring版本号</version> <scope>compile</scope> </dependency>implementation 'org.springframework:spring-web:你的Spring版本号' - Spring Security依赖(对应第三个Listener):
Maven配置:
Gradle配置:<dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>你的Spring Security版本号</version> <scope>compile</scope> </dependency>implementation 'org.springframework.security:spring-security-web:你的Spring Security版本号'
注意:依赖的
scope不能设为provided,否则打包时不会将Jar包放入项目WEB-INF/lib目录,Tomcat无法加载这些类。
2. 检查Eclipse部署装配设置
右键项目 → 「Properties」→ 「Deployment Assembly」,确认Maven Dependencies(或Gradle依赖目录)已添加到部署列表,且目标路径为WEB-INF/lib。如果缺失,点击「Add」→ 「Java Build Path Entries」→ 选择对应依赖项添加。
3. 排查Tomcat类加载冲突
不要同时在Tomcat的lib目录和项目WEB-INF/lib目录放置Spring相关Jar包,这会导致类加载混乱。如果之前手动往Tomcat/lib放过Spring包,直接移除,让项目自身的依赖Jar包提供类文件。
4. 重新构建部署
- 执行
mvn clean install(Maven)或gradle clean build(Gradle),确保依赖正确下载并打包到项目WEB-INF/lib。 - 在Eclipse中右键Tomcat服务器 → 「Clean...」,清理后重新启动服务器。
内容的提问来源于stack exchange,提问作者Nav SSE
相关产品推荐
相关产品推荐

