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

Spring应用IDE运行正常 Ubuntu部署时无法加载org.mariadb.jdbc.Driver求助

问题根因

核心错误为Spring Boot自动配置数据源时,无法找到指定的MariaDB JDBC驱动类,本地IDE运行正常但Ubuntu服务器部署失败,均为打包/部署环节的依赖加载差异导致。

差异原因排查点
  • 打包方式问题:IDE运行时会直接加载本地Maven仓库中的依赖,若部署时打的是普通jar包而非Spring Boot可执行jar(未使用spring-boot-maven-plugin打包),依赖包不会被打进jar内部,Ubuntu环境若无全局加载该MariaDB驱动就会找不到类
  • 依赖scope配置错误:检查pom中mariadb-java-client的<scope>标签是否被误设为provided、test,这两个scope的依赖不会被打进可执行jar的BOOT-INF/lib目录,IDE运行时会加载但部署后缺失
  • 部署包损坏:传输到Ubuntu的jar包损坏,内部BOOT-INF/lib下缺少mariadb-java-client-2.7.4.jar文件
  • 配置文件不一致:检查Ubuntu上使用的application.yml/properties配置,是否显式指定了spring.datasource.driver-class-name,值是否拼写错误,同时确认部署时使用的配置文件与本地IDE的配置无差异
可行解决方案
  • 修正打包配置:确保pom中已经引入spring-boot-maven-plugin插件,配置如下:
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

执行mvn clean package重新打可执行jar,打包完成后可以用jar tf 你的jar包名.jar | grep mariadb命令检查是否包含对应的驱动包

  • 修正依赖scope:确认mariadb-java-client依赖未设置scope,或显式设置为compile即可,如下:
<dependency>
    <groupId>org.mariadb.jdbc</groupId>
    <artifactId>mariadb-java-client</artifactId>
    <version>2.7.4</version>
    <!-- 不要加<scope>provided</scope>或者<scope>test</scope> -->
</dependency>
  • 校验驱动类配置:如果配置文件中显式指定了驱动类,确认拼写正确:
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver

Spring Boot 2.x版本在检测到classpath下有mariadb驱动时会自动适配该驱动类,不写该配置也可正常运行

  • 校验部署包完整性:重新传输jar包到Ubuntu服务器,避免传输过程中文件损坏,部署前可用md5sum命令对比本地和服务器上的jar包哈希值是否一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:24:01