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

无法连接MariaDB驱动:Minecraft插件数据库连接故障排查

解决Minecraft插件连接MariaDB时的ClassNotFoundException问题

问题根源

Minecraft(Spigot/Bukkit)的插件类加载器是隔离式的——你通过Gradle添加的implementation依赖仅在编译阶段生效,不会被自动打包到最终生成的插件JAR文件里。运行时服务器的类加载器找不到MariaDB驱动类,就会抛出ClassNotFoundException或者No suitable driver found异常。

解决方案:用Gradle Shadow插件打包驱动到插件JAR

这是最可靠的解决方式,步骤如下:

  1. 添加Shadow插件到Gradle配置
    在你的build.gradle文件的plugins块中加入Shadow插件:

    plugins {
        id 'java'
        id 'com.github.johnrengelman.shadow' version '7.1.2' // 可替换为最新兼容版本
        // 其他插件(如spigot相关插件)保持不变
    }
    
  2. 修改MariaDB驱动的依赖类型
    把原来的implementation依赖改成shadow,这样Shadow插件会把驱动类打包到最终的插件JAR中:

    dependencies {
        shadow 'org.mariadb.jdbc:mariadb-java-client:4.2'
        // 你的其他依赖(如spigot-api)保持不变,比如compileOnly 'org.spigotmc:spigot-api:1.20.1-R0.1-SNAPSHOT'
    }
    
  3. 生成包含驱动的插件JAR
    在IntelliJ的Gradle面板中,找到Tasks > shadow > shadowJar任务并执行,或者在终端运行:

    ./gradlew shadowJar
    

    生成的JAR文件会在build/libs目录下,文件名通常是[你的插件名]-[版本]-all.jar,这个就是包含了MariaDB驱动的完整插件包。

  4. 替换服务器插件目录中的JAR
    把生成的带-all后缀的JAR放到服务器的plugins目录,重启服务器即可。

额外优化

JDBC 4.0及以上版本会自动加载类路径中的驱动类,所以你可以移除代码中的Class.forName("org.mariadb.jdbc.Driver");这一行,直接调用DriverManager.getConnection()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 10:37:18