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

Gradle构建Spring Boot Jar包部署Linux服务器启动失败:无自动配置类

解决Spring Boot Jar包部署Linux启动失败:找不到自动配置类的问题

我之前在部署Spring Boot项目到Linux服务器时也遇到过几乎一模一样的报错,核心问题都是Jar包没有被正确打包成Spring Boot可执行Jar,导致服务器启动时找不到自动配置类。下面是我总结的排查和解决步骤:

1. 检查Gradle构建配置是否正确

Spring Boot项目必须依赖spring-boot-gradle-plugin才能生成包含自动配置和依赖的可执行Jar,首先确认你的build.gradle(或build.gradle.kts)里有正确的插件配置:

// build.gradle 示例配置
plugins {
    id 'org.springframework.boot' version '2.7.14' // 替换成你的Spring Boot版本
    id 'io.spring.dependency-management' version '1.0.15.RELEASE'
    id 'java'
}

group = 'haughton'
version = '0.0.1-SNAPSHOT'

java {
    sourceCompatibility = '11' // 替换成你的JDK版本
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    // 其他依赖...
}

关键是要确保org.springframework.boot插件被正确应用,它会自动帮你处理可执行Jar的打包逻辑。

2. 用正确的Gradle任务构建Jar包

很多人会犯的错误是用普通的jar任务构建,而不是Spring Boot提供的bootJar任务:

  • 错误命令:./gradlew jar → 生成的是普通Jar,不包含Spring Boot启动器和自动配置依赖
  • 正确命令:./gradlew bootJar → 生成的是可执行Jar,包含所有必要的内容

构建完成后,Jar包会在build/libs/目录下,文件名通常是{项目名}-{版本}.jar。

3. 验证Jar包结构是否正确

你可以在本地用命令查看Jar包的结构,确认是否包含Spring Boot所需的目录:

jar tf your-app.jar

正常的Spring Boot可执行Jar应该包含:

  • BOOT-INF/classes/:存放你的项目编译后的类文件
  • BOOT-INF/lib/:存放所有依赖Jar包
  • META-INF/spring-autoconfigure-metadata.properties:自动配置的元数据文件

如果这些内容缺失,说明打包过程有问题。

4. 服务器上用正确的命令启动Jar

确保在Linux服务器上用java -jar命令启动,而不是手动指定类路径:

java -jar your-app.jar

如果用java -cp your-app.jar haughton.icecreamapi.IcecreamapiApplication这种方式启动,可能会因为类路径不全导致找不到自动配置类。

5. 排查配置类的注解问题

如果上面的步骤都没问题,再检查你的AppConfig类:

  • 确认它被@SpringBootApplication注解标记(这个注解包含了@ComponentScan、@EnableAutoConfiguration和@Configuration)
  • 如果手动使用了@Import注解,检查导入的类是否存在,有没有拼写错误
  • 确认@ComponentScan的扫描路径包含了你的项目包(默认是@SpringBootApplication所在包及其子包)

按照上面的步骤排查后,重新构建并部署Jar包,应该就能正常启动了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:31:40