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

使用Maven开发Minecraft插件时出现ClassNotFoundException求助

解决Minecraft插件运行时NoClassDefFoundError/ClassNotFoundException问题

问题根源分析

编译正常但运行时找不到类,核心原因有两个:

  1. 依赖Scope配置错误:<scope>provided</scope>表示依赖由运行环境(如Spigot服务器)提供,但你的lavidefaultlib-1.3.jar是自定义库,服务器不会自带,导致运行时无法加载类。
  2. 打包未包含依赖:Spigot仅加载主插件Jar,若未将自定义库的类合并或打包进主插件,运行时自然找不到对应类。
  3. 直接指向target目录的仓库配置不规范,容易引发依赖引用不稳定。

具体解决方案

步骤1:将自定义库安装到Maven本地仓库

打开命令行,进入lavidefaultlib-1.3.jar所在目录(D:/Minecraft/MinecraftPlugins/LaviDefault/lavidefaultlib/target/),执行以下命令:

mvn install:install-file -Dfile=lavidefaultlib-1.3.jar -DgroupId=com.lavi -DartifactId=Lavidefaultlib -Dversion=1.3 -Dpackaging=jar

注意:groupId要和你自定义库中类的根包名一致(比如你的类com.lavi.GameMode.SPLi_GameMode,groupId就是com.lavi)

步骤2:修正主插件Pom配置

移除错误仓库配置

删除主插件Pom中指向target目录的<repository>节点,Maven会自动从本地仓库读取已安装的依赖。

修正依赖Scope

将依赖的<scope>provided</scope>改为compile(或直接删除该节点,compile是默认值),确保编译和运行时都能获取依赖:

<dependency>
    <groupId>com.lavi</groupId> <!-- 与install命令中的groupId保持一致 -->
    <artifactId>Lavidefaultlib</artifactId>
    <version>1.3</version>
</dependency>

步骤3:配置Maven Shade插件打包依赖

需要将自定义库的类合并到主插件Jar中,在主插件Pom的<build>节点下添加Shade插件配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.4.1</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <includes>
                            <include>com.lavi:*</include>
                        </includes>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

步骤4:重新打包测试

执行mvn clean package,将生成的主插件Jar放入Spigot服务器的plugins目录启动即可。


验证要点

  • 解压打包后的主插件Jar,确认内部包含com/lavi/GameMode/SPLi_GameMode类文件。
  • 检查代码中类的引用路径与自定义库中的类路径完全一致(Java包名、类名区分大小写)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:30:02