You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何我的Spring Web项目搭配Web与Thymeleaf依赖无法正常运行?

解决Spring Boot 2.0.1启动后自行关闭无法监听端口的问题

嘿,我来帮你排查这个问题!你遇到的是Spring Boot启动后直接退出的典型场景,通常是因为Web容器没被正确拉起,或者依赖、配置出了问题。咱们一步步来定位解决:

1. 确认启动类的配置是否正确

首先得保证你的启动类符合Spring Boot规范:

  • 启动类上必须有@SpringBootApplication注解,这个注解整合了自动配置、组件扫描和配置类的核心功能
  • 启动类要放在根包路径下(比如你的项目核心代码在com.yourname.springjokesapp包下,启动类就直接放在这个包里,这样Spring才能扫描到所有子包的组件)

给你个正确的启动类示例:

package com.yourname.springjokesapp;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringJokesAppApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringJokesAppApplication.class, args);
    }
}

2. 检查Maven依赖是否完整且正确

Spring Boot的Web starter是帮你自动引入Tomcat容器和Web相关依赖的核心,确保你的pom.xml里的依赖配置正确:

<dependencies>
    <!-- Spring Web核心依赖,内置Tomcat容器 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- Thymeleaf模板引擎依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <!-- 可选:测试依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<!-- 确保Spring Boot父依赖版本匹配 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.1.RELEASE</version>
    <relativePath/> <!-- 从仓库拉取父依赖 -->
</parent>

如果之前依赖下载可能存在缓存或缺失问题,执行以下命令强制刷新依赖:

mvn clean install -U

3. 获取完整日志定位问题根源

你提供的日志只到ApplicationContext刷新阶段,后面肯定有关键信息没展示——比如容器启动失败的原因、Bean初始化错误,或者Spring判断不需要启动Web容器的提示。

可以在src/main/resources/application.properties中开启DEBUG级别日志:

# 开启Spring框架的DEBUG日志
logging.level.org.springframework=DEBUG
# 开启自定义项目包的DEBUG日志
logging.level.com.yourname.springjokesapp=DEBUG

重新启动项目后,就能看到更详细的启动流程,找到容器未启动就退出的具体原因——比如端口被占用、依赖缺失,或者配置类出错。

4. 排除自定义代码的干扰

如果以上步骤都没问题,那可能是你添加的自定义代码导致的。建议:

  • 创建一个全新的空白Spring Boot项目,只引入Web和Thymeleaf依赖,直接启动验证是否能正常监听端口
  • 如果空白项目能正常启动,再逐步添加你的代码(控制器、配置类等),每加一部分就启动一次,定位到导致问题的代码块

内容的提问来源于stack exchange,提问作者munkas09

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:28:45