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,是因为两个关键配置冲突:
pom.xml中设置了<packaging>war</packaging>,这是为了将项目打包成war包部署到外部Tomcat而配置的;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。
解决方法
根据你的需求选择一种方案:
本地开发直接运行内嵌Tomcat(推荐):
- 把
pom.xml里的<packaging>war</packaging>修改为<packaging>jar</packaging>; - 或者删除
spring-boot-starter-tomcat依赖的<scope>provided</scope>标签,让Tomcat依赖被包含到运行环境中。
- 把
打包成war包部署到外部Tomcat:
- 保持现有
pom.xml配置不变; - 将项目打包成war包,放到外部Tomcat的
webapps目录下,启动外部Tomcat运行; - 本地开发时,也可以在IDEA中配置外部Tomcat服务器来部署运行项目。
- 保持现有
内容的提问来源于stack exchange,提问作者Ishani Samaraweera
相关产品推荐
相关产品推荐

