这个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)生成的源码 |