tomcat正常启动但 SpringMVC 控制器无法启动

这个bug很神奇!!!tomcat能正常启动但是在浏览器调用后端接口时,你的请求发不到后端,这个bug直接困了我两天时间,直接问AI也没用,他认为是你的springmvc配置文件问题,其实不然,我都已经反复对照了

一、检查一下工件配置

问题是 Java 类文件已经同步到out/artifacts/.../WEB-INF/classes,但 WEB 应用运行依赖的 jar 包(如 servlet-api、SpringMVC 相关 jar)未被复制到out/artifacts/.../WEB-INF/lib,Tomcat 的类加载器就会找不到 Servlet 相关类(比如javax.servlet.http.HttpServlet、org.springframework.web.servlet.DispatcherServlet),最终导致 SpringMVC 无法初始化、控制器无法访问。

你现在的情况是:

✅ WEB-INF/classes 有 Java 编译文件 → 自身类能找到;

❌ WEB-INF/lib 为空 / 缺失关键 jar → Servlet/SpringMVC 核心类找不到。

正常的输出目录结构:

Maven 项目中,依赖 jar 默认存放在本地仓库(如C:\Users\你的用户名\.m2\repository),IDEA 需要通过Artifacts配置,主动把这些依赖 jar 复制到out/artifacts/.../WEB-INF/lib ------ 你的配置中恰好缺失了这一步。

二、解决:

很简单,就是把lib下的jar包放入输出目录即可,然后再重新编译项目

再次启动tomcat时就可以发现out目录下有lib目录了

补充知识点:

out 是 IntelliJ IDEA 专属的编译 / 部署输出目录,target 是 Maven/Gradle 等构建工具的标准构建产物目录。

角色 负责的目录 作用
Maven target/classes 编译src/main/java下的.java 为.class
target/test-classes 编译测试代码
IDEA(Artifacts) out/artifacts/demo8_Web_exploded 构建 Web 部署目录(模拟 Tomcat 的 WebApp 结构),本应自动包含target/classes的类文件

1、out 是 IntelliJ IDEA 为了管理自身编译、部署产物而自动创建的目录,完全属于 IDE 层面,和 Maven/Gradle 等构建工具无关(即使不用构建工具,纯 IDEA 项目也会生成 out)。IDEA 把 out 拆分为两个核心子目录,分别处理 "编译产物" 和 "部署产物":

子目录 作用
out/production/[模块名] 存放 IDEA 原生编译的 .class 文件(对应 src/main/java 下的 Java 源码);测试代码编译后会放到 out/test-production/[模块名]
out/artifacts/ 存放 IDEA 构建的 "工件(Artifact)"------ 比如 Web 项目的 xxx_exploded(解压的 WAR 包,用于 Tomcat 本地部署)、JAR 包等;这是 Tomcat 在 IDEA 中启动时实际加载的部署目录

2、target 是 Maven/Gradle 等构建工具遵循 "约定优于配置" 原则,自动创建的标准构建产物目录 ------ 完全属于构建工具层面,和 IDE 无关(即使不用 IDEA,用命令行 mvn compile 也会生成 target)。构建工具把所有 "构建相关产物" 都集中到 target,是项目编译、打包、测试的 "唯一核心目录":

子目录 作用
target/classes 存放构建工具编译的 .class 文件(对应 src/main/java),是 Maven/Gradle 编译的核心产物;这是 Java Web 项目中 WEB-INF/classes 的 "源目录"
target/test-classes 存放测试代码(src/test/java)编译后的 .class 文件
target/xxx.war mvn package 后生成的 WAR 包(可直接部署到 Tomcat 的 webapps 目录)
target/xxx/ mvn war:exploded 后生成的解压 WAR 包(和 IDEA 的 exploded 工件结构一致)
generated-sources/ 代码生成工具(如 MyBatis Generator)生成的源码
相关推荐
Wang15305 小时前
jdk内存配置优化
java·计算机网络
0和1的舞者5 小时前
Spring AOP详解(一)
java·开发语言·前端·spring·aop·面向切面
Wang15305 小时前
Java多线程死锁排查
java·计算机网络
小小星球之旅6 小时前
CompletableFuture学习
java·开发语言·学习
利刃大大6 小时前
【SpringBoot】Spring事务 && @Transactional详解 && Spring事务失效问题
spring boot·spring·事务
jiayong236 小时前
知识库概念与核心价值01
java·人工智能·spring·知识库
皮皮林5517 小时前
告别 OOM:EasyExcel 百万数据导出最佳实践(附开箱即用增强工具类)
java
Da Da 泓7 小时前
多线程(七)【线程池】
java·开发语言·线程池·多线程
To Be Clean Coder7 小时前
【Spring源码】getBean源码实战(三)
java·mysql·spring
Wokoo78 小时前
开发者AI大模型学习与接入指南
java·人工智能·学习·架构