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

IntelliJ启动Tomcat访问Servlet报实例化错误及404问题如何解决

问题根因定位

代码在其他设备可正常运行,可直接排除代码语法、web.xml配置逻辑错误,问题100%出在本地IntelliJ的项目编译、部署配置环节。第一次访问报实例化Servlet类错误是因为Tomcat找不到编译后的HelloServlet.class文件,加载失败后Tomcat会标记该Servlet为不可用,后续刷新就直接返回404。


排查解决步骤

  • 步骤1:标记Java源码目录
    右键点击项目根目录下的java文件夹 → 选择「Mark Directory as」→ 选中「Sources Root」,标记成功后文件夹会变为蓝色,IntelliJ才会把这个目录识别为源码目录编译里面的Java文件。
  • 步骤2:补全Servlet-api依赖
    本地项目缺少Servlet-api依赖会导致HelloServlet编译失败:
    打开File → Project Structure → Modules → Dependencies → 点击+号 → 选择「Library」→ 选中你本地配置的Tomcat对应的依赖库添加,把该依赖的Scope设置为Provided。
  • 步骤3:检查编译输出
    点击顶部菜单栏Build → Build Project,到项目默认编译输出目录out/production/你的项目名称下检查是否存在HelloServlet.class文件,不存在的话到IDEA底部「Problems」面板查看具体编译报错修复即可。
  • 步骤4:检查Artifacts部署配置
    打开File → Project Structure → Artifacts,查看你部署的war exploded包的WEB-INF/classes目录下是否存在HelloServlet.class:
    如果不存在,在右侧「Available Elements」列表找到你的项目编译输出项,右键点击选择「Put into Output Root」,把编译后的class文件放到部署包的正确位置。
  • 步骤5:核对Tomcat运行配置
    打开右上角Tomcat运行配置面板 → 切换到「Deployment」标签:
    确认部署的是你刚才配置的war exploded包,同时核对Application context配置:如果配置为/demo,访问地址应为http://localhost:8080/demo/HelloServlet;如果配置为/,直接访问http://localhost:8080/HelloServlet即可。
  • 步骤6:清理缓存重启
    如果以上配置都正确还是报错,就是IDEA缓存异常:点击File → Invalidate Caches... → 勾选「Clear file system cache and local history」→ 点击「Invalidate and Restart」,重启后重新构建项目再启动Tomcat测试即可。

内容的提问来源于stack exchange,提问作者Александр Лисов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:48:04