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

Spring Boot应用启动后Tomcat未启动,IntelliJ IDEA是否需单独安装?

问题描述

我的Spring Boot应用运行后未启动Tomcat服务器,访问localhost:8080时显示:

This site can't be reached.

请问IntelliJ IDEA社区版是否需要单独安装Tomcat,还是通过Spring Initializer初始化的Spring Boot项目已自带Tomcat?


相关文件信息

application.properties文件

spring.application.name=hdfc-online-ticket
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/otrs
spring.datasource.username=root
spring.datasource.password=<undisclosed>
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update
#logging.level.root=TRACE

日志文件

2024-05-13T09:36:52.476+05:30  INFO 10964 --- [hdfc-online-ticket] [           main] c.t.h.HdfcOnlineTicketApplication        : Starting HdfcOnlineTicketApplication using Java 21.0.2 with PID 10964 (C:\Users\ishani.s\Downloads\HDFC\hdfc-online-ticket\hdfc-online-ticket\target\classes started by ishani.s in C:\Users\ishani.s\Downloads\HDFC\hdfc-online-ticket\hdfc-online-ticket)
2024-05-13T09:36:52.481+05:30  INFO 10964 --- [hdfc-online-ticket] [           main] c.t.h.HdfcOnlineTicketApplication        : No active profile set, falling back to 1 default profile: "default"
2024-05-13T09:37:06.967+05:30  INFO 10964 --- [hdfc-online-ticket] [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JDBC repositories in DEFAULT mode.
2024-05-13T09:37:08.225+05:30  INFO 10964 --- [hdfc-online-ticket] [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 1190 ms. Found 0 JDBC repository interfaces.
2024-05-13T09:37:15.785+05:30  INFO 10964 --- [hdfc-online-ticket] [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2024-05-13T09:37:35.822+05:30  INFO 10964 --- [hdfc-online-ticket] [           main] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Added connection com.mysql.cj.jdbc.ConnectionImpl@51c959a4
2024-05-13T09:37:35.838+05:30  INFO 10964 --- [hdfc-online-ticket] [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2024-05-13T09:37:38.034+05:30  INFO 10964 --- [hdfc-online-ticket] [           main] c.t.h.HdfcOnlineTicketApplication        : Started HdfcOnlineTicketApplication in 53.302 seconds (process running for 64.828)
2024-05-13T09:37:38.080+05:30  INFO 10964 --- [hdfc-online-ticket] [ionShutdownHook] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2024-05-13T09:37:38.223+05:30  INFO 10964 --- [hdfc-online-ticket] [ionShutdownHook] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.

Process finished with exit code 0

主类

@SpringBootApplication
public class HdfcOnlineTicketApplication {

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

}

pom.xml文件

<?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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.ticket</groupId>
    <artifactId>hdfc-online-ticket</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>hdfc-online-ticket</name>
    <description>HDFC Onlie Ticketing System</description>
    <properties>
        <java.version>21</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </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>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

问题分析与解决

核心原因

你的项目未启动Tomcat,是因为两个关键配置冲突:

  1. pom.xml中设置了<packaging>war</packaging>,这是为了将项目打包成war包部署到外部Tomcat而配置的;
  2. spring-boot-starter-tomcat依赖的<scope>provided</scope>,表示该依赖由运行环境提供,编译打包时不会包含到项目中。

当你直接运行主类时,本地环境没有提供Tomcat容器,Spring Boot找不到Web运行环境,启动完成后就直接退出(日志末尾Process finished with exit code 0证明应用正常终止,没有持续运行)。

关于Tomcat的疑问

  • Spring Initializer初始化的Web项目默认自带内嵌Tomcat,spring-boot-starter-web依赖已经包含了Tomcat相关组件,不需要单独安装Tomcat;
  • IntelliJ IDEA社区版也不需要单独安装Tomcat来运行Spring Boot Web项目,只要项目依赖配置正确,就能自动启动内嵌Tomcat。

解决方法

根据你的需求选择一种方案:

  1. 本地开发直接运行内嵌Tomcat(推荐):

    • 把pom.xml里的<packaging>war</packaging>修改为<packaging>jar</packaging>;
    • 或者删除spring-boot-starter-tomcat依赖的<scope>provided</scope>标签,让Tomcat依赖被包含到运行环境中。
  2. 打包成war包部署到外部Tomcat:

    • 保持现有pom.xml配置不变;
    • 将项目打包成war包,放到外部Tomcat的webapps目录下,启动外部Tomcat运行;
    • 本地开发时,也可以在IDEA中配置外部Tomcat服务器来部署运行项目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 07:37:31