Spring Boot应用URL映射异常:访问路径返回静态资源未找到错误
Spring Boot 404 "No static resource" 问题排查方案
1. 验证Controller路径映射
- 检查Job Controller是否存在
@GetMapping("/")或@GetMapping("/home")的方法映射。如果Controller未覆盖这两个路径,Spring Boot会默认尝试加载静态资源(如index.html),找不到就返回404。 - 确认Controller类上的
@RequestMapping前缀是否和目标路径冲突,比如如果类上标注了@RequestMapping("/jobs"),方法映射路径会是/jobs/xxx,无法匹配/或/home。
2. 检查启动类扫描范围
- 确保项目启动类添加了
@SpringBootApplication注解(该注解包含@ComponentScan),且启动类所在包是Controller所在包的父包或同包。 - 如果Controller在独立包下,需手动指定扫描路径:
@SpringBootApplication(scanBasePackages = "com.yourpackage.controller")
3. 排查application.properties配置
- 检查是否配置了
spring.mvc.static-path-pattern或spring.web.resources.static-locations,这类配置会覆盖Spring Boot默认静态资源规则。例如设置spring.mvc.static-path-pattern=/static/**后,访问/不会匹配静态资源,若没有对应Controller映射则直接404。 - 建议暂时注释掉这类自定义配置,恢复默认规则后重试。
4. 确认pom.xml依赖完整性
- 确保引入了
spring-boot-starter-web依赖,这是Web项目核心,缺失会导致Controller无法生效:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> - 可通过
mvn dependency:tree命令排查是否存在版本冲突。
5. 分析启动日志
- 查找日志中
HandlerMapping相关输出,确认Controller映射是否成功注册。正常情况下会有类似:Mapped "{[/home],methods=[GET]}" onto public java.lang.String com.example.controller.JobController.home()
- 若没有此类日志,说明Controller未被扫描或映射配置错误。
- 查看静态资源加载日志,若没有
Adding welcome page: class path resource [index.html]的记录,说明无可用静态资源,此时必须有Controller映射才能正常响应。
6. 快速验证测试
- 在Job Controller中添加临时测试方法:
@GetMapping("/") public String home() { return "Home Page Response"; } @GetMapping("/home") public String homePage() { return "Welcome to Home"; } - 重启项目后访问对应路径,若能返回字符串,说明Controller功能正常,原问题为无对应路径映射;若仍404,则需排查Controller扫描或依赖问题。
内容的提问来源于stack exchange,提问作者Sravan Kondeti
相关产品推荐
相关产品推荐

