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

Spring Boot Jar包启动后自动关闭问题排查求助

问题:Spring Boot Jar包启动后立刻终止,本地bootRun正常

我的Spring Boot项目在IntelliJ中执行gradle bootRun可正常运行,但通过Task->Build->Jar构建Jar包后,进入/build/libs目录,在PowerShell中执行java -jar jar-file.jar命令时,控制台输出启动日志后应用立刻终止。

控制台日志

.   ____          _            __ _ _
 /\ / ___'_ __ _ _(_)_ __  __ _ \ \\ \\ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \\ \\ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.2.0)

15:57:24.858 [main] INFO com.hipertrofiabet.ApplicationStart -- Starting ApplicationStart using Java 17.0.7 with PID 2736 (E:\my github repos\hipertrofia bet\static server\build\libs\hipertrofiabet-1.0-SNAPSHOT.jar started by SaluC in E:\my github repos\hipertrofia bet\static server\build\libs)
15:57:24.861 [main] INFO com.hipertrofiabet.ApplicationStart -- No active profile set, falling back to 1 default profile: "default"
15:57:25.081 [main] INFO com.hipertrofiabet.ApplicationStart -- Started ApplicationStart in 0.337 seconds (process running for 0.524)

项目核心代码

启动类

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

控制器

@Controller
public class StaticController {
    @RequestMapping(path="/", method=RequestMethod.GET)
    public String indexPage() {
        return "index";
    }
}

build.gradle配置

buildscript {
    repositories {
        maven {
            url = uri("https://plugins.gradle.org/m2/")
        }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:3.2.0")
    }
}

plugins {
    id "java"
    id "application"
    id "org.springframework.boot" version "3.2.0"
}

group "com.hipertrofiabet"
version "1.0-SNAPSHOT"

repositories {
    gradlePluginPortal()
    mavenCentral()
}

dependencies {
    implementation("org.springframework.boot:spring-boot:3.1.5")
    implementation("org.springframework.boot:spring-boot-autoconfigure:3.2.0")
    implementation("org.springframework.boot:spring-boot-starter-web:3.1.5")
    implementation("org.springframework.boot:spring-boot-devtools:3.1.5")
    implementation("org.springframework.boot:spring-boot-starter-thymeleaf:3.1.5")
    implementation("org.springframework.boot:spring-boot-starter-parent:3.1.5")
    implementation("org.springframework.boot:spring-boot-starter-tomcat:3.2.0")
    testImplementation("org.springframework.security:spring-security-test:6.2.0")
    implementation("org.springframework.security:spring-security-web:6.2.0")
    implementation("org.springframework.security:spring-security-core:6.2.0")
    implementation("org.springframework.boot:spring-boot-starter-actuator:3.2.0")
//    implementation("org.springframework.boot:spring-boot-starter-data-redis:3.1.5")
//    implementation("org.springframework.boot:spring-boot-starter-validation:3.1.5")
    implementation("org.yaml:snakeyaml:2.2")
    implementation("commons-io:commons-io:2.15.0")
    implementation("org.apache.commons:commons-lang3:3.13.0")
    compileOnly("org.projectlombok:lombok:1.18.30")
    annotationProcessor("org.projectlombok:lombok:1.18.30")
    testCompileOnly("org.projectlombok:lombok:1.18.30")
    testAnnotationProcessor("org.projectlombok:lombok:1.18.30")
    testImplementation(platform("org.junit:junit-bom:5.9.1"))
    testImplementation("org.junit.jupiter:junit-jupiter:5.9.2")
    implementation("org.jetbrains.kotlin:kotlin-script-runtime:1.9.0")
}

jar {
    manifest {
        attributes "Main-Class" : "com.hipertrofiabet.ApplicationStart"
    }
    duplicatesStrategy = "exclude"
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

application.yml配置

server:
  port: 8081
  address: 0.0.0.0
logging:
  level:
    web: INFO

问题原因及解决方法

核心问题

  1. 自定义Jar任务与Spring Boot插件冲突:Spring Boot插件自带bootJar任务生成可执行Jar,你自定义的jar任务生成的是普通Jar,无法正确启动内嵌Tomcat,导致应用启动后直接退出。
  2. 依赖版本混乱:混合使用Spring Boot 3.1.5和3.2.0版本,引发类加载或容器初始化异常。
  3. 错误依赖配置:spring-boot-starter-parent是父项目依赖,不应放在dependencies块中。

解决步骤

  1. 删除自定义Jar任务
    直接移除build.gradle中整个jar代码块,Spring Boot插件会自动处理主类配置和可执行Jar打包逻辑。

  2. 统一Spring Boot版本
    将所有Spring Boot相关依赖版本统一为3.2.0(与插件版本一致),修正后的依赖块示例:

    dependencies {
        implementation("org.springframework.boot:spring-boot:3.2.0")
        implementation("org.springframework.boot:spring-boot-autoconfigure:3.2.0")
        implementation("org.springframework.boot:spring-boot-starter-web:3.2.0")
        implementation("org.springframework.boot:spring-boot-devtools:3.2.0")
        implementation("org.springframework.boot:spring-boot-starter-thymeleaf:3.2.0")
        implementation("org.springframework.boot:spring-boot-starter-tomcat:3.2.0")
        testImplementation("org.springframework.security:spring-security-test:6.2.0")
        implementation("org.springframework.security:spring-security-web:6.2.0")
        implementation("org.springframework.security:spring-security-core:6.2.0")
        implementation("org.springframework.boot:spring-boot-starter-actuator:3.2.0")
        implementation("org.yaml:snakeyaml:2.2")
        implementation("commons-io:commons-io:2.15.0")
        implementation("org.apache.commons:commons-lang3:3.13.0")
        compileOnly("org.projectlombok:lombok:1.18.30")
        annotationProcessor("org.projectlombok:lombok:1.18.30")
        testCompileOnly("org.projectlombok:lombok:1.18.30")
        testAnnotationProcessor("org.projectlombok:lombok:1.18.30")
        testImplementation(platform("org.junit:junit-bom:5.9.1"))
        testImplementation("org.junit.jupiter:junit-jupiter:5.9.2")
        implementation("org.jetbrains.kotlin:kotlin-script-runtime:1.9.0")
    }
    
  3. 修正spring-boot-starter-parent配置
    移除dependencies中的spring-boot-starter-parent依赖,若需要使用父项目管理版本,在build.gradle顶部添加:

    plugins {
        id "java"
        id "org.springframework.boot" version "3.2.0"
        id "io.spring.dependency-management" version "1.1.4" // 用于依赖版本管理
    }
    
    // 可选:通过BOM管理依赖版本,替代parent继承
    dependencyManagement {
        imports {
            mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
        }
    }
    
  4. 构建并运行
    执行gradle bootJar构建可执行Jar,进入build/libs目录执行java -jar hipertrofiabet-1.0-SNAPSHOT.jar,应用将保持运行状态。

额外建议

  • 移除application插件,Spring Boot插件已包含相关功能。
  • 生产环境建议移除spring-boot-devtools,或通过配置禁用其自动重启功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 05:22:05