
spring boot 应用通过 java -jar 运行时瞬间启动又关闭,通常是因为 jar 包未正确打包为可执行 fat jar,缺少 spring boot maven 插件的 repackage 目标或构建方式错误。
当你在 VS Code 中使用 Java Project Manager 直接“构建 JAR”时,它往往只是执行了 Maven 的默认 mvn compile 或 mvn jar:jar,并未触发 spring-boot-maven-plugin 的 repackage 目标——而这一步才是生成真正可执行、内嵌 Tomcat(或 Netty)并包含所有依赖的 Fat Jar 的关键。
✅ 正确做法是:始终使用 Maven 生命周期命令显式构建可执行 JAR:
mvn clean package
该命令会自动执行:
- 编译源码(compile)
- 运行测试(test,除非跳过)
- 打包为普通 JAR(jar:jar)
- 最后由 spring-boot-maven-plugin 的 repackage 目标将原始 JAR 重构成可执行 Fat Jar(默认输出为 target/interconnecting-flights-0.0.1-SNAPSHOT.jar)
⚠️ 注意事项:
- 确保 pom.xml 中已声明 spring-boot-maven-plugin(你已正确配置,无需额外改动);
- 不要手动使用 jar cf 或 IDE 的“Export as JAR”功能,它们无法处理 Spring Boot 的类加载器结构和启动引导逻辑;
- 验证生成的 JAR 是否为可执行:运行 java -Djarmode=help -jar your-app.jar,若显示 jarmode 支持则说明是合法 Spring Boot Fat Jar;
- 若仍异常,可添加 JVM 参数查看详细日志:java -Dlogging.level.org.springframework=DEBUG -jar your-app.jar,重点关注是否因端口占用、配置缺失或 Bean 初始化失败导致上下文提前关闭。
? 补充建议:在 pom.xml 的
org.springframework.boot spring-boot-maven-plugin repackage
总结:VS Code 的 Java Project Manager 并非 Maven 构建工具替代品,其“构建 JAR”功能不具备 Spring Boot 特定的打包语义。坚持使用 mvn clean package 是保证生成标准可执行 JAR 的唯一可靠方式。










