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

在Minecraft Java插件中运行JDA时出现NoClassDefFoundError求助

问题解决:Minecraft插件集成JDA出现NoClassDefFoundError

问题原因

你遇到的NoClassDefFoundError是因为JDA依赖没有被打包进最终的插件Jar文件。当前Gradle配置中,JDA使用了compileOnly依赖类型,这个类型仅在编译代码时提供类文件,不会将依赖的Jar包内容合并到你的插件Jar中,导致Minecraft服务器运行时找不到JDA的相关类。

解决方案:使用Shadow插件打包依赖

Spigot/Paper插件通常需要将第三方依赖(如JDA)打包进自身Jar文件中,这里推荐使用Gradle的Shadow插件来完成这个工作,步骤如下:

1. 修改Gradle配置文件

更新你的build.gradle,引入Shadow插件并调整依赖配置:

plugins {
    id("java")
    id("com.github.johnrengelman.shadow") version "8.1.1" // 引入Shadow插件
}

group = "org.xeon.bot"
version = "1.0-SNAPSHOT"

repositories {
    mavenCentral()
    maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots/")
    maven("https://oss.sonatype.org/content/repositories/snapshots")
    maven("https://oss.sonatype.org/content/repositories/central")
}

dependencies {
    testImplementation(platform("org.junit:junit-bom:5.10.0"))
    testImplementation("org.junit.jupiter:junit-jupiter")
    compileOnly("org.spigotmc:spigot-api:1.21-R0.1-SNAPSHOT") // Spigot API用compileOnly,服务器已自带
    implementation("net.dv8tion:JDA:5.0.1") // 改为implementation,让Shadow插件能打包它
}

tasks.test {
    useJUnitPlatform()
}

// 可选:配置Shadow插件排除不需要的文件,优化Jar大小
tasks.shadowJar {
    // 排除Spigot API相关类(服务器已提供)
    exclude("org/bukkit/**")
    exclude("org/spigotmc/**")
    // 设置最终Jar的名称,方便识别
    archiveBaseName.set("MinecraftDiscordBot")
    archiveClassifier.set("") // 去掉默认的"-all"后缀
}

2. 执行打包命令

在项目根目录下运行以下Gradle命令,生成包含JDA依赖的插件Jar:

./gradlew shadowJar

打包后的Jar文件会位于build/libs/目录下,名称为MinecraftDiscordBot-1.0-SNAPSHOT.jar(根据配置调整)。

3. 替换服务器插件

将生成的Shadow Jar文件替换原来的插件Jar,重启Minecraft服务器即可解决错误。

额外说明

  • compileOnly适用于服务器已经自带的依赖(如Spigot API),不需要打包进插件;而第三方依赖(如JDA)需要用implementation或api,让Shadow插件能将其合并到最终Jar中。
  • 如果遇到JDA的传递依赖冲突,可以在implementation中添加exclude规则排除冲突的依赖,例如:
    implementation("net.dv8tion:JDA:5.0.1") {
        exclude(group = "some.conflicting.group")
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:53:14