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

运行Spring Boot打包的jar时提示META-INF/spring.factories无自动配置类错误

Spring Boot Gradle打包报错"No auto configuration classes found in META-INF/spring.factories"解决方案

该错误本质是你使用了普通Gradle jar任务打包,生成的jar仅包含项目自身代码,没有Spring Boot可执行jar所需的依赖包、启动引导结构和自动配置文件,仅指定mainClassName无法解决根本问题。

1. 修正build.gradle配置

Spring Boot 2.5+版本推荐将启动类配置统一放到springBoot块,同时禁用普通jar任务避免打包出无效文件,修正后的完整配置如下:

plugins {
    id 'org.springframework.boot' version '2.5.3'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.example.app'
version = '0.0.1-SNAPSHOT'
// 如果你确定要用JDK14编译可改为14,当前配置兼容JDK11及以上版本
sourceCompatibility = '11'

repositories {
    mavenCentral()
}

springBoot {
    // 这里替换为你实际的主启动类全限定名,需保证路径完全匹配
    mainClass.set('com.example.ExampleApplication')
}

jar {
    // 禁用普通jar任务,避免生成不含依赖的无效jar
    enabled = false
}

bootJar {
    // 可选配置:直接指定打包输出文件名为main.jar,无需手动改名
    archiveFileName.set('main.jar')
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-webflux'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'mysql:mysql-connector-java'
    annotationProcessor 'org.projectlombok:lombok'
}

2. 执行正确的打包命令

不要使用gradle jar命令打包,需使用Spring Boot提供的bootJar任务:

# 清理旧构建产物
./gradlew clean
# 执行Spring Boot可执行jar打包
./gradlew bootJar

3. 运行验证

打包完成后生成的jar文件默认在build/libs目录下,执行以下命令启动:

java -jar build/libs/main.jar

异常排查

如果修改后仍报错,请检查以下项:

  • 确认主启动类com.example.ExampleApplication真实存在,且类上添加了@SpringBootApplication注解
  • 解压生成的main.jar文件,确认存在BOOT-INF/classes/com/example/ExampleApplication.class文件
  • 确认META-INF/spring.factories文件存在,且包含自动配置相关条目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:15:01