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

首次运行Servlet报HTTP 500错误提示com.demo.AddServlet类未找到如何解决

问题原因

核心原因为Tomcat加载Servlet时预期的类名与项目中实际存在的类名不匹配,触发ClassNotFoundException异常,常见场景如下:

  • 文件名和public类名不符合Java规范:当前文件名为AddServlet.java,但代码中定义的public类为AddDemo,Java要求public类的文件名必须与类名完全一致,否则编译生成的class文件名和预期不符,会导致配置匹配失败。
  • web.xml配置错误:若项目WEB-INF目录下的web.xml文件中配置了Servlet映射,其中<servlet-class>节点填写的全类名为com.demo.AddServlet,和实际类的全类名com.demo.AddDemo不匹配。
  • 旧配置缓存未清理:修改类名前的编译产物、Tomcat工作缓存未清理,导致服务器仍按照旧的类名加载。
排查解决步骤
  • 第一步:统一文件名和类名
    二选一修改即可:
    1. 将代码中的类名从AddDemo改为AddServlet,对应构造方法名也同步修改,保持和文件名AddServlet.java一致
    2. 将文件名从AddServlet.java改为AddDemo.java,保持和代码中的类名一致
  • 第二步:核对Servlet配置
    如果你使用web.xml进行配置,找到对应Servlet的配置段,确认<servlet-class>的值为实际的类全类名:
    <servlet>
        <servlet-name>AddDemo</servlet-name>
        <servlet-class>com.demo.AddDemo</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>AddDemo</servlet-name>
        <url-pattern>/AddDemo</url-pattern>
    </servlet-mapping>
    
    若你已经使用@WebServlet("/AddDemo")注解配置,可以删除web.xml中对应的旧Servlet配置,避免配置冲突。
  • 第三步:清理缓存重新部署
    1. 删除项目的编译输出目录(如IDEA的target目录、Eclipse的build目录)
    2. 删除Tomcat安装目录下work/Catalina文件夹内的所有缓存内容
    3. 重新编译项目,将新的编译产物部署到Tomcat,重启服务后测试
  • 第四步:核对访问路径
    配置生效后,访问路径为http://[服务器地址]:[端口]/[项目上下文路径]/AddDemo即可触发该Servlet的逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:06:06