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

SpringBoot嵌入Minecraft插件打包后启动报错:找不到自动配置类

问题根源

这个报错的核心是打包后的Minecraft插件JAR里缺少SpringBoot自动配置必需的元数据文件——META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports。IDEA里直接跑主函数正常,是因为IDE会自动处理类路径和资源加载,但打包成MC插件JAR时,这些关键资源要么被遗漏,要么被打包插件的规则覆盖了。

解决办法

1. 修复ShadowJar的资源合并规则

如果你用ShadowJar打包插件,必须确保SpringBoot的META-INF资源被正确合并,而不是被过滤掉。在build.gradle里修改ShadowJar配置:

shadowJar {
    mergeServiceFiles()
    mergeManifest()
    // 强制包含SpringBoot自动配置的元数据目录
    from(sourceSets.main.resources) {
        include 'META-INF/spring/**'
    }
    // 排除签名文件,避免合并冲突
    exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA'
}

2. 检查依赖范围

别把SpringBoot的依赖设为provided或compileOnly,否则打包时不会把这些依赖打进JAR里。正确的依赖配置应该是:

dependencies {
    // SpringBoot核心依赖用implementation,确保打包时包含
    implementation 'org.springframework.boot:spring-boot-starter'
    // Minecraft API依赖用compileOnly,因为服务器本身会提供
    compileOnly 'org.spigotmc:spigot-api:1.20.1-R0.1-SNAPSHOT'
}

3. 手动指定自动配置类(兜底方案)

如果自动扫描还是找不到配置类,可以直接在SpringBoot启动类里手动导入需要的自动配置类,绕过自动扫描:

@SpringBootApplication(scanBasePackages = "com.your.plugin.package")
@ImportAutoConfiguration({
    PropertyPlaceholderAutoConfiguration.class,
    WebMvcAutoConfiguration.class
    // 按需添加你需要的其他自动配置类
})
public class PluginSpringApp {
    // 在插件onEnable里调用这个方法初始化SpringBoot
    public static void init() {
        SpringApplication.run(PluginSpringApp.class);
    }
}

4. 验证JAR内容

打包完后解压JAR,检查META-INF/spring目录下是否有org.springframework.boot.autoconfigure.AutoConfiguration.imports文件。如果没有,检查sourceSets配置,确保资源目录被正确识别:

sourceSets {
    main {
        resources {
            srcDirs = ['src/main/resources']
            include '**/*'
        }
    }
}

5. 避免打包插件冲突

不要同时用SpringBoot的spring-boot-gradle-plugin和ShadowJar,两者打包逻辑会冲突。如果需要用SpringBoot的功能,直接通过依赖引入,别用它的打包插件:

plugins {
    id 'java'
    id 'com.github.johnrengelman.shadow' version '8.1.1'
    // 注释掉这两个SpringBoot打包插件
    // id 'org.springframework.boot' version '3.1.2'
    // id 'io.spring.dependency-management' version '1.1.2'
}
额外提醒
  • Minecraft插件的入口类(继承JavaPlugin)要在onEnable()方法里调用SpringBoot的初始化方法,别用独立的主函数跑。
  • 确保SpringBoot版本和MC服务器的Java版本兼容——比如MC 1.17+需要Java 16+,SpringBoot 3.x要求Java 17+。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 10:35:10