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时手动传入参数:
或者先设置系统环境变量再运行Jar。java -jar -DB_DRIVER=com.mysql.cj.jdbc.Driver -DB_URL=你的数据库URL -DB_USER=用户名 -DB_PASSWORD=密码 your-app.jar - 更新Hibernate方言:SpringBoot 3.x对应MySQL 8+,建议将
database-platform改为org.hibernate.dialect.MySQL8Dialect,避免方言不兼容问题。 - 清理缓存重新打包:执行
./gradlew clean build,彻底清理旧的构建缓存,确保依赖重新下载并正确打包。
内容的提问来源于stack exchange,提问作者suyeon
相关产品推荐
相关产品推荐

