基础Spring Boot程序出现HTTP Status 404 – Not Found问题求助
解决Tomcat启动正常但访问localhost:8080出现404的问题
嘿,我仔细看了你的问题描述和代码配置,发现问题出在Maven依赖的混乱配置上——虽然Tomcat成功启动了,但Spring MVC的核心组件没被正确加载,导致你的控制器映射根本没生效,所以才会出现404错误。
问题根源分析
你的pom.xml里做了很多不必要的依赖排除和重复引入:
- 你在
spring-boot-starter中排除了spring-boot-starter-tomcat,又单独引入了这个依赖,还在spring-web里再次排除它,这种反复操作会导致Web容器的初始化逻辑出现异常。 - 最重要的是,你没有引入
spring-boot-starter-web这个Spring Boot Web应用的核心依赖,它包含了Spring MVC、Tomcat以及Web开发所需的所有基础组件,缺少它的话,Spring无法正确识别并注册你的控制器映射。
解决方案步骤
1. 重构Maven依赖配置
把你的pom.xml简化成以下正确的配置,去掉所有不必要的排除和单独依赖,直接引入spring-boot-starter-web即可:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.springframework</groupId> <artifactId>gs-consuming-rest</artifactId> <version>0.1.0</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.6.RELEASE</version> </parent> <properties> <java.version>1.8</java.version> </properties> <dependencies> <!-- Spring Boot Web核心依赖,包含Spring MVC、Tomcat等所有Web开发必需组件 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
2. 确认包结构有效性
你的主应用类HelloWorldApplication和控制器HelloController都在com.example.demo包下,@SpringBootApplication注解默认会扫描主类所在包及其子包的所有组件,所以这个结构是完全没问题的,不需要额外修改。
3. 清理并重新构建项目
在项目根目录执行以下Maven命令,清理旧的编译文件并重新构建:
mvn clean install
4. 重启Spring Boot应用
重新启动你的HelloWorldApplication,之后访问http://localhost:8080,就能看到控制器返回的"Hello!"了。
内容的提问来源于stack exchange,提问作者Adharsh
相关产品推荐
相关产品推荐

