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

SpringBoot打包Jar时出现com.mysql.cj.jdbc.Driver类找不到问题求助

解决SpringBoot打包Jar后找不到MySQL驱动的问题

问题分析

报错根源是${DB_DRIVER}未被正确解析,导致无法加载com.mysql.cj.jdbc.Driver,同时需确认MySQL驱动依赖是否被正确打包到Jar中。

你的配置信息

application.yml

spring:
  database: mysql
  datasource:
    url: ${DB_URL}
    driver-class-name: ${DB_DRIVER}
    username: ${DB_USER}
    password: ${DB_PASSWORD}

  jpa:
    hibernate:
      ddl-auto: update
    # 개발 초기 단계는 create 또는 update
    # 테스트 서버는 update 또는 validate
    # 스테이징과 운영 서버는 validate 또는 none

    show-sql: true
    properties:
      hibernate.format_sql: true
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect

build.gradle

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.1.1'
    id 'io.spring.dependency-management' version '1.1.0'
}

group = 'com.cookiee'
version = '0.0.1-SNAPSHOT'

java {
    sourceCompatibility = '17'
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'
    testImplementation 'org.junit.jupiter:junit-jupiter:5.8.1'


    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    implementation 'org.springframework.boot:spring-boot-starter'
    runtimeOnly 'com.mysql:mysql-connector-j'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    // 구글 로그인을 위해 구글에서 제공하는 simple-json 라이브러리 사용
    implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
}

tasks.named('test') {
    useJUnitPlatform()
}

解决方案

  • 硬编码驱动类名(快速验证):把driver-class-name: ${DB_DRIVER}改成driver-class-name: com.mysql.cj.jdbc.Driver,避免环境变量未加载的问题,直接指定驱动类。SpringBoot 3.x搭配的mysql-connector-j默认驱动类就是这个,无需通过环境变量传递。
  • 确认依赖是否被打包:执行jar tf your-app.jar | grep mysql(替换成你的Jar文件名),查看输出中是否有mysql-connector-j-xxx.jar。如果没有,将runtimeOnly 'com.mysql:mysql-connector-j'改为implementation 'com.mysql:mysql-connector-j',重新执行./gradlew clean build打包。
  • 运行Jar时传递环境变量:如果必须使用环境变量,运行Jar时手动传入参数:
    java -jar -DB_DRIVER=com.mysql.cj.jdbc.Driver -DB_URL=你的数据库URL -DB_USER=用户名 -DB_PASSWORD=密码 your-app.jar
    
    或者先设置系统环境变量再运行Jar。
  • 更新Hibernate方言:SpringBoot 3.x对应MySQL 8+,建议将database-platform改为org.hibernate.dialect.MySQL8Dialect,避免方言不兼容问题。
  • 清理缓存重新打包:执行./gradlew clean build,彻底清理旧的构建缓存,确保依赖重新下载并正确打包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 15:06:25