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

Minecraft Fabric模组客户端启动报错:MongoDB依赖缺失求助

问题定位

这个错误的核心原因是MongoDB相关依赖(尤其是bson包)没有被打包进最终的模组Jar文件:

  • 用./gradlew runClient运行时,Gradle会自动把所有声明的依赖添加到运行时类路径中,所以能正常加载类;
  • 构建成品Jar后,Fabric默认的Gradle脚本不会把第三方依赖打包进去,导致游戏启动时找不到org.bson.conversions.Bson类。
解决方案

需要通过Gradle的Shadow插件把MongoDB依赖打包进模组Jar,具体步骤如下:

1. 添加Shadow插件依赖

在项目根目录的build.gradle顶部,添加Shadow插件的classpath:

buildscript {
    dependencies {
        classpath 'com.github.jengelman.gradle.plugins:shadow:7.1.2' // 版本可按需更新
    }
}

接着在模组模块的build.gradle中应用插件:

plugins {
    // 保留原有插件(比如fabric-loom)
    id 'com.github.johnrengelman.shadow'
}

2. 配置Shadow打包规则

在模组模块的build.gradle中添加打包配置,指定要包含的MongoDB相关包:

shadowJar {
    // 包含MongoDB和bson的所有类文件
    include 'org/mongodb/**'
    include 'org/bson/**'
    
    // 可选:重命名包路径避免和其他模组依赖冲突,把「你的模组id」换成实际的模组ID
    relocate 'org.mongodb', '你的模组id.libs.org.mongodb'
    relocate 'org.bson', '你的模组id.libs.org.bson'
}

// 让build任务自动执行shadowJar,替代默认的jar任务
tasks.named('build') {
    dependsOn shadowJar
}

// 确保runClient等测试任务使用shadowJar的输出
tasks.named('runClient') {
    classpath = files(shadowJar.archiveFile)
}

3. 验证配置

执行./gradlew build重新构建模组,然后把build/libs/目录下带-shadow后缀的Jar文件放入Minecraft的mods文件夹测试即可。

额外注意事项
  • 尽量选择和Fabric环境兼容的MongoDB稳定版本,比如mongodb-driver-sync:4.10.2,不要盲目换版本;
  • 检查build.gradle的依赖声明是否正确,确保包含完整的MongoDB驱动:
dependencies {
    implementation 'org.mongodb:mongodb-driver-sync:4.10.2'
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 22:39:58