You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tomcat启动报错:java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener

解决Tomcat启动时ContextLoaderListener引发的NoClassDefFoundError问题

嘿,我之前也碰到过几乎一模一样的问题,这个错误本质上是Tomcat的Servlet API没有被正确引入到项目的类路径里导致的。给你几个靠谱的解决步骤,按顺序试应该能搞定:

  • 检查Eclipse中Tomcat的类库配置
    打开Eclipse,右键你的项目 → Properties → Java Build Path → Libraries标签页:

    • 查看是否有Apache Tomcat v7.0下的servlet-api.jar,如果没有:
      1. 点击Add Library
      2. 选择Server Runtime → 下一步
      3. 选中你的Tomcat 7.0.47实例 → 完成
    • 重要提醒:绝对不要手动把servlet-api.jar复制到项目的WEB-INF/lib目录下,这会和Tomcat自带的API冲突,反而引发更多问题。
  • 确认项目的Target Runtime设置
    同样在项目Properties里,找到Project Facets:

    1. 点击右侧的Runtime按钮
    2. 确保选中的是你的Tomcat 7.0.47实例,没有的话点击Add添加
    3. 同时检查Java版本是否设置为1.7,和你的JRE版本匹配
  • 清理和重建项目

    1. 先清理项目:Project菜单 → Clean → 选中你的项目 → OK
    2. 如果是Maven项目,右键项目 → Maven → Update Project;非Maven项目直接重新编译整个项目
    3. 最后重启Tomcat服务器,确保之前的部署残留被清除
  • 检查Tomcat安装目录权限
    如果你的Tomcat安装在系统目录(比如Windows的C:\Program Files、Linux的/usr/local),可能存在权限问题导致Eclipse无法正确读取Tomcat的库文件:

    • 可以尝试把Tomcat移到非系统目录,或者给Eclipse赋予足够的读写权限

错误原因说明

javax.servlet.ServletContextListener是Servlet API的核心接口,Spring的org.springframework.web.context.ContextLoaderListener需要依赖它才能完成Web应用上下文的初始化。如果类路径里找不到这个接口,就会抛出java.lang.NoClassDefFoundError,本质就是依赖缺失或者类路径冲突。

内容的提问来源于stack exchange,提问作者Abhishek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:12:09