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)生成的源码
相关推荐
乌蒙山连着山外山2 小时前
linux中查询多个匹配字段
java·linux·服务器
⑩-3 小时前
@Component
java
xing-xing3 小时前
Java多版本配置及版本切换(Mac适配)
java·macos
oioihoii3 小时前
现代C++系统编程中类型重解释的内存安全范式
java·c++·安全
SimonKing3 小时前
我为什么放弃了XMind和亿图,投向了这款开源绘图工具的怀抱?
java·后端·程序员
萧曵 丶3 小时前
CompletableFuture 底层原理详解
java·jvm·多线程·并发编程
爱笑的眼睛113 小时前
神经网络的骨架:深入解析前向传播的数学本质与工程实现
java·人工智能·python·ai
就叫飞六吧3 小时前
pdf转国产ofd格式代码案例-Java
java·python·pdf
Yng Forever3 小时前
腾讯云人脸识别SDK集成
java·后端·云计算·腾讯云