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

使用SBT运行SpringBoot项目为何启动后自动终止?

问题分析与解决方案

你的SpringBoot Scala项目启动后直接终止,核心原因是主线程执行完启动逻辑后未保持阻塞,导致整个进程退出。结合日志与配置,给出以下修复步骤:

1. 修正SpringBoot应用入口类

确保你有标准的SpringBoot启动类,而非仅在package object中定义main方法:

package com.secondave

import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication

@SpringBootApplication
class Application

object Application {
  def main(args: Array[String]): Unit = {
    // 传入带@SpringBootApplication注解的类对象启动Spring上下文
    SpringApplication.run(classOf[Application], args)
  }
}

若此前用package object作为入口,Spring上下文启动后主线程会直接结束;上述写法中SpringApplication.run会阻塞主线程,维持Tomcat服务运行状态。

2. 在build.sbt中开启fork模式

在build.sbt中添加以下配置,让SBT fork独立进程运行应用,避免SBT主线程结束导致应用终止:

fork := true

添加后的完整build.sbt示例:

scalaVersion := "3.2.2"
organization := "..."
name := "CalBackend"
version := "0.0.1-SNAPSHOT"
description := "Backend service for my scheduling system"
organizationHomepage := ...
// 开启fork模式,保证应用进程独立运行
fork := true

libraryDependencies ++= Seq(
  "org.springframework.boot" % "spring-boot-starter-web" % "3.0.6",
  "org.springframework.boot" % "spring-boot-starter-security" % "3.0.6",
  "com.auth0" % "auth0" % "2.1.0",
  "com.auth0" % "java-jwt" % "4.4.0",
)

验证修复

重新执行sbt run,Tomcat启动后进程将保持运行,持续监听8080端口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 21:37:32