Minecraft Java插件对接MongoDB出现MongoClients类找不到错误求助
问题根因
你的报错本质是运行时MongoDB驱动类没有被正确打包到插件jar中,同时代码和依赖配置也存在多处错误:
- 依赖配置错误:你引入的
org.mongodb:mongo-java-driver3.12.10版本属于旧版legacy驱动,MongoClients类属于新版同步驱动组件,依赖不匹配 - 打包插件冲突:同时配置了
maven-shade-plugin和maven-assembly-plugin,导致依赖没有被正确打入最终jar包 - 代码语法错误:存在类型强转错误、静态变量引用错误两个明显的编译问题
修复步骤
1. 修正MongoDB依赖
删除你现有添加的org.mongodb:mongo-java-driver依赖,替换为官方新版同步驱动:
<dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-sync</artifactId> <version>4.6.1</version> <scope>compile</scope> </dependency>
2. 修正打包配置
删除maven-assembly-plugin的全部配置,仅保留maven-shade-plugin,同时添加依赖重定位避免和服务器其他插件的同依赖冲突:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <createDependencyReducedPom>false</createDependencyReducedPom> <relocations> <relocation> <pattern>com.mongodb</pattern> <shadedPattern>me.codexisphantom.mongodb</shadedPattern> </relocation> <relocation> <pattern>org.bson</pattern> <shadedPattern>me.codexisphantom.bson</shadedPattern> </relocation> </relocations> </configuration> </execution> </executions> </plugin>
3. 修正主类代码错误
- 删除旧版导入
import com.mongodb.MongoClient;,替换为import com.mongodb.client.MongoClient; - 数据库连接代码删除强制类型转换,修改为:
// 数据库连接 MongoClient mongoClient = MongoClients.create("mongodb+srv://myusername:@databasemc.ehssc.mongodb.net/VelocityMC?retryWrites=true&w=majority");
- 修正
setInstance方法的变量名错误:
private static void setInstance(VelocityLobbyGeneral instance){ VelocityLobbyGeneral.instance = instance; }
4. 正确打包部署
执行mvn clean package命令进行打包,取target目录下大小为几MB的VelocityLobby-1.0.jar上传到服务器插件目录,不要使用几十KB的原始未打包依赖的jar。
额外检查项
确认MongoDB Atlas控制台已添加你的服务器公网IP到白名单,连接串中的用户名、密码、数据库名称配置正确。
内容的提问来源于stack exchange,提问作者Codexis
相关产品推荐
相关产品推荐

