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

Maven构建Minecraft Java插件出现MongoClientURI类未找到报错如何解决

问题根因

这个java.lang.NoClassDefFoundError: com/mongodb/MongoClientURI报错是因为MongoDB驱动的相关类没有被正确打包到你最终发布的插件jar包中,你当前的pom.xml配置存在多个打包插件冲突、冗余配置的问题。

解决步骤

  • 第一步:删除pom.xml中多余的打包插件,仅保留maven-compiler-plugin和maven-shade-plugin即可,maven-assembly-plugin和maven-jar-plugin完全不需要:

    Spigot插件的主类通过plugin.yml指定,不需要在jar的manifest中配置mainClass,同时使用shade和assembly两个打包插件会导致输出的jar被互相覆盖,最终得到没有包含依赖的版本。

  • 第二步:修改maven-shade-plugin的配置,添加依赖过滤和包重定向规则,避免和服务端自带的Mongo驱动版本冲突:
    正确的shade配置如下:
    <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>
                    <!-- 过滤掉scope为provided的依赖,避免把spigot-api打进jar包 -->
                    <filters>
                        <filter>
                            <artifact>*:*</artifact>
                            <excludes>
                                <exclude>META-INF/*.SF</exclude>
                                <exclude>META-INF/*.DSA</exclude>
                                <exclude>META-INF/*.RSA</exclude>
                            </excludes>
                        </filter>
                    </filters>
                    <!-- 包重定向,避免和服务端自带的Mongo类冲突 -->
                    <relocations>
                        <relocation>
                            <pattern>com.mongodb</pattern>
                            <shadedPattern>ca.lwi.battlepot.mongo.lib.com.mongodb</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>org.bson</pattern>
                            <shadedPattern>ca.lwi.battlepot.mongo.lib.org.bson</shadedPattern>
                        </relocation>
                    </relocations>
                </configuration>
            </execution>
        </executions>
    </plugin>
    
  • 第三步:执行mvn clean package命令打包,打包完成后从target目录下取文件名不带original前缀的jar包,放到服务端的plugins文件夹中即可。
  • 第四步:可选验证:用解压工具打开你打包好的插件jar,检查是否存在上述shadedPattern路径下的MongoClientURI类,存在则说明依赖打包成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:15:04