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

运行Fat Jar时无法排除DataSourceAutoConfiguration类问题求助

问题排查与解决方案

核心原因

你自定义的Gradle jar 任务没有遵循Spring Boot Fat Jar的规范结构,导致Spring Boot无法识别DataSourceAutoConfiguration为合法的自动配置类——官方Spring Boot打包插件会自动处理自动配置元数据(如META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件),而自定义打包逻辑遗漏了这些关键元数据的正确加载。

推荐解决方案:使用Spring Boot官方Gradle插件

这是Spring Boot项目打包Fat Jar的标准方式,能自动处理所有依赖、元数据和类加载逻辑,彻底解决此类问题。

修改build.gradle配置

替换你当前的自定义jar任务,改为以下配置:

plugins {
    id 'java'
    // 引入Spring Boot插件(替换为你的Spring Boot对应版本)
    id 'org.springframework.boot' version '3.2.0'
    // 引入依赖管理插件,自动处理Spring Boot依赖版本
    id 'io.spring.dependency-management' version '1.1.4'
}

group = '你的项目组ID'
version = '你的项目版本'

java {
    sourceCompatibility = '17' // 根据你的JDK版本调整,如1.8、11等
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    // 添加你的其他业务依赖
}

// 配置Spring Boot Fat Jar打包任务,指定主类
bootJar {
    mainClass = 'com.example.MainClass' // 替换为你的MainClass全限定类名
}

打包与运行

执行Gradle命令打包:

./gradlew bootJar

打包后的Jar文件位于build/libs/目录下,运行时执行:

java -jar build/libs/你的项目名称-版本.jar

若坚持自定义打包(不推荐)

如果必须使用自定义jar任务,需补充以下关键配置:

  • 正确配置主类到Manifest:
    manifest {
        attributes 'Main-Class': 'com.example.MainClass' // 替换为你的主类全路径
    }
    
  • 确保打包时保留Spring Boot自动配置元数据文件,不要排除META-INF/spring/目录下的文件
  • 处理类加载逻辑,确保Spring Boot能正确扫描到自动配置类(此方式复杂度高,容易引发其他类加载问题)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:13:21