SpringBoot程序通过JAR运行时自动关闭,IDE及命令行运行正常
SpringBoot JAR包启动后立即关闭问题
问题场景
我通过VSCode的Java项目管理器构建SpringBoot应用的JAR包,直接运行该JAR时,应用启动后会立刻关闭;但在VSCode内运行,或者执行mvn spring-boot:run命令时,应用均能正常运行。
主类代码
package com.jvc.interconnectingflights.app; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication @ComponentScan("com.jvc.interconnectingflights") public class InterconnectingFlightsApplication { public static void main(String[] args) { SpringApplication.run(InterconnectingFlightsApplication.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.0.2</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.jvc</groupId> <artifactId>interconnecting-flights</artifactId> <version>0.0.1-SNAPSHOT</version> <name>interconnecting-flights</name> <description>SpringBoot app</description> <properties> <java.version>17</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.22</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>2.0.1.Final</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
JAR运行日志
22:05:28.287 [main] INFO com.jvc.interconnectingflights.app.InterconnectingFlightsApplication - Started InterconnectingFlightsApplication in 3.102 seconds (process running for 3.46) 22:05:28.318 [SpringApplicationShutdownHook] DEBUG org.springframework.context.annotation.AnnotationConfigApplicationContext - Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@78e94dcf, started on Tue Jan 31 22:05:25 CET 2023
已尝试方案
我已经试过针对“SpringBoot应用启动后立即关闭”问题的常见解决方案,但均未奏效,希望得到新的排查建议。
排查建议
- 确认JAR包类型:执行
jar tf target/interconnecting-flights-0.0.1-SNAPSHOT.jar查看是否存在BOOT-INF目录,若不存在说明构建的不是可执行JAR,需检查spring-boot-maven-plugin配置是否正确,确保构建时执行mvn clean package命令。 - 移除冲突依赖:同时引入
spring-boot-starter-web(Servlet栈)和spring-boot-starter-webflux(Reactor栈)会导致自动配置冲突,容器无法正常启动。根据业务需求保留其中一个依赖即可。 - 校验JDK版本:执行
java -version确认运行JAR的JDK版本与项目指定的java.version=17一致,避免版本不兼容问题。 - 启用详细日志:运行JAR时添加参数
--logging.level.org.springframework=DEBUG,通过详细日志定位是否存在Bean加载失败、自动配置跳过等异常。
内容的提问来源于stack exchange,提问作者jvivo
相关产品推荐
相关产品推荐

