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

IntelliJ IDEA中Maven项目打jar包后DriverManager找不到mariadb驱动如何解决

问题根本原因

该报错核心原因是运行时类路径中不存在MariaDB驱动类,IDEA本地运行时依赖会被自动引入,但默认打包后的jar仅包含项目自身代码,未携带第三方依赖,或是DriverManager的自动驱动扫描机制失效导致。

解决方案

  • 方案1:使用Maven插件打包含所有依赖的可执行jar
    在pom.xml中添加maven-assembly-plugin插件配置,会自动把所有依赖打入最终jar包:
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.3.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <!-- 替换为你项目的主类全路径 -->
                        <mainClass>com.bremea.packagename.YourMainClass</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

配置完成后执行mvn package命令,会在target目录生成后缀为-jar-with-dependencies.jar的文件,直接运行该文件即可。

  • 方案2:显式加载驱动类(适配自动扫描失效场景)
    部分类加载环境下JDBC4的自动驱动扫描会失效,可在调用DriverManager.getConnection前手动加载驱动类,修改后的代码如下:
public static void init() {
    try {
        // 手动加载MariaDB驱动
        Class.forName("org.mariadb.jdbc.Driver");
        connection = DriverManager.getConnection("jdbc:mariadb://ip:3306/db", "uname", "pass");
    } catch (SQLException | ClassNotFoundException throwables) {
        throwables.printStackTrace();
    }
}
  • 方案3:调整IDEA自带Artifact打包配置
    如果坚持使用IDEA的Artifact功能打包,需要手动把依赖加入输出:
  1. 打开File -> Project Structure -> Artifacts
  2. 找到当前的jar打包配置,在右侧Available Elements列表中找到mariadb-java-client依赖
  3. 右键选择Put into Output Root,保存配置后重新打包即可
  • 额外检查项
    确认pom.xml中mariadb依赖的scope没有被设置为provided,该属性会导致依赖不被打包到最终产物中,改为默认的compile即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:39:02