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

添加obliviate-invs依赖后Jar包出现NoClassDefFoundError问题求助

PaperSpigot插件中NoClassDefFoundError: mc/obliviate/inventory/Gui问题分析与标准解决方法

问题根源

出现这个错误的核心原因是打包后的插件Jar中缺少obliviate-invs库的相关类文件,具体可能由以下情况导致:

  • Maven依赖配置错误:比如将依赖的scope设为provided,导致打包时不会将依赖类包含进Jar;
  • 打包插件配置不当:maven-shade-plugin、maven-assembly-plugin等插件未正确配置,未能将依赖类合并到最终Jar中;
  • Maven/IDE缓存问题:本地仓库的依赖文件不完整,或IDE缓存了旧的构建结果,导致打包时未引入完整的依赖类;
  • 多打包插件冲突:同时使用shade、assembly等插件,导致打包逻辑混乱,依赖类被意外排除。

标准解决方案

1. 修正Maven依赖配置

确保obliviate-invs的依赖scope为默认的compile(无需显式声明),不要设置为provided,示例配置:

<dependency>
    <groupId>com.github.hamza-cskn.obliviate-invs</groupId>
    <artifactId>core</artifactId>
    <version>4.1.13</version>
</dependency>

2. 正确配置maven-shade-plugin(推荐方案)

maven-shade-plugin是Spigot/Paper插件打包依赖的标准工具,它能将依赖类直接合并到插件Jar中,避免类加载问题。完整配置示例:

<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>
                        <!-- 明确包含obliviate-invs的所有类 -->
                        <includes>
                            <include>mc/obliviate/**</include>
                        </includes>
                        <!-- 可选但推荐:重命名依赖包路径,避免与其他插件的同依赖版本冲突 -->
                        <relocations>
                            <relocation>
                                <pattern>mc.obliviate</pattern>
                                <shadedPattern>你的插件包路径.libs.mc.obliviate</shadedPattern>
                            </relocation>
                        </relocations>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

3. 清理缓存并重新构建

  • 执行Maven命令:mvn clean install,清理旧的构建产物和本地缓存,重新拉取完整依赖并打包;
  • 在IntelliJ IDEA中,通过File -> Invalidate Caches...清理IDE缓存,然后点击Reload All Maven Projects重新加载项目。

4. 验证打包结果

解压生成的插件Jar包,检查是否存在mc/obliviate/inventory/Gui.class文件。如果存在,说明打包正确;如果不存在,回到打包配置重新检查。

常见误区规避

  • 不要同时使用maven-shade-plugin和maven-assembly-plugin,两者功能重叠,会导致打包逻辑冲突;
  • 不要使用One-Jar打包,它的类加载机制与Spigot的插件类加载器不兼容,会导致依赖类无法被正确加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 20:06:26