I’m trying to run Spring Boot inside a Minecraft plugin. When I use the main function in IntelliJ to get and print an entity, it works fine. However, when I start the application from the JAR file on the Minecraft server, I get this error. i coudnt found any solution. Maby some of you couse coud help:D
[00:03:31 ERROR]: [org.springframework.boot.SpringApplication] Application run failed
java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports. If you are using a custom packaging, make sure that file is correct.
at org.springframework.util.Assert.notEmpty(Assert.java:381) ~[YourPluginName.jar:?]
at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getCandidateConfigurations(AutoConfigurationImportSelector.java:182) ~[YourPluginName.jar:?]
at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getAutoConfigurationEntry(AutoConfigurationImportSelector.java:126) ~[YourPluginName.jar:?]
at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector$AutoConfigurationGroup.process(AutoConfigurationImportSelector.java:430) ~[YourPluginName.jar:?]
at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGrouping.getImports(ConfigurationClassParser.java:813) ~[YourPluginName.jar:?]
at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGroupingHandler.processGroupImports(ConfigurationClassParser.java:743) ~[YourPluginName.jar:?]
at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorHandler.process(ConfigurationClassParser.java:714) ~[YourPluginName.jar:?]
at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:183) ~[YourPluginName.jar:?]
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:416) ~[YourPluginName.jar:?]
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:289) ~[YourPluginName.jar:?]
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:349) ~[YourPluginName.jar:?]
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:118) ~[YourPluginName.jar:?]
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:788) ~[YourPluginName.jar:?]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:606) ~[YourPluginName.jar:?]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[YourPluginName.jar:?]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) ~[YourPluginName.jar:?]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:334) ~[YourPluginName.jar:?]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) ~[YourPluginName.jar:?]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) ~[YourPluginName.jar:?]
at gg.flyte.template.PluginTemplate.startApplication(PluginTemplate.kt:103) ~[YourPluginName.jar:?]
at gg.flyte.template.PluginTemplate.onEnable(PluginTemplate.kt:61) ~[YourPluginName.jar:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:287) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.enablePlugin(PaperPluginInstanceManager.java:188) ~[paper-1.20.4.jar:git-Paper-446]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.enablePlugin(PaperPluginManagerImpl.java:104) ~[paper-1.20.4.jar:git-Paper-446]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:507) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at org.bukkit.craftbukkit.v1_20_R3.CraftServer.enablePlugin(CraftServer.java:639) ~[paper-1.20.4.jar:git-Paper-446]
at org.bukkit.craftbukkit.v1_20_R3.CraftServer.enablePlugins(CraftServer.java:550) ~[paper-1.20.4.jar:git-Paper-446]
at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:671) ~[paper-1.20.4.jar:git-Paper-446]
at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:431) ~[paper-1.20.4.jar:git-Paper-446]
at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:309) ~[paper-1.20.4.jar:git-Paper-446]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1131) ~[paper-1.20.4.jar:git-Paper-446]
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:319) ~[paper-1.20.4.jar:git-Paper-446]
at java.lang.Thread.run(Thread.java:1623) ~[?:?]
[00:03:31 ERROR]: Error occurred while enabling Paper-Kotlin-Template v1.0.0 (Is it up to date?)
java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports. If you are using a custom packaging, make sure that file is correct.
at org.springframework.util.Assert.notEmpty(Assert.java:381) ~[YourPluginName.jar:?]
at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getCandidateConfigurations(AutoConfigurationImportSelector.java:182) ~[YourPluginName.jar:?]
at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getAutoConfigurationEntry(AutoConfigurationImportSelector.java:126) ~[YourPluginName.jar:?]
at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector$AutoConfigurationGroup.process(AutoConfigurationImportSelector.java:430) ~[YourPluginName.jar:?]
at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGrouping.getImports(ConfigurationClassParser.java:813) ~[YourPluginName.jar:?]
at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGroupingHandler.processGroupImports(ConfigurationClassParser.java:743) ~[YourPluginName.jar:?]
at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorHandler.process(ConfigurationClassParser.java:714) ~[YourPluginName.jar:?]
at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:183) ~[YourPluginName.jar:?]
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:416) ~[YourPluginName.jar:?]
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:289) ~[YourPluginName.jar:?]
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:349) ~[YourPluginName.jar:?]
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:118) ~[YourPluginName.jar:?]
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:788) ~[YourPluginName.jar:?]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:606) ~[YourPluginName.jar:?]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[YourPluginName.jar:?]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) ~[YourPluginName.jar:?]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:334) ~[YourPluginName.jar:?]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) ~[YourPluginName.jar:?]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) ~[YourPluginName.jar:?]
at gg.flyte.template.PluginTemplate.startApplication(PluginTemplate.kt:103) ~[YourPluginName.jar:?]
at gg.flyte.template.PluginTemplate.onEnable(PluginTemplate.kt:61) ~[YourPluginName.jar:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:287) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.enablePlugin(PaperPluginInstanceManager.java:188) ~[paper-1.20.4.jar:git-Paper-446]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.enablePlugin(PaperPluginManagerImpl.java:104) ~[paper-1.20.4.jar:git-Paper-446]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:507) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at org.bukkit.craftbukkit.v1_20_R3.CraftServer.enablePlugin(CraftServer.java:639) ~[paper-1.20.4.jar:git-Paper-446]
at org.bukkit.craftbukkit.v1_20_R3.CraftServer.enablePlugins(CraftServer.java:550) ~[paper-1.20.4.jar:git-Paper-446]
at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:671) ~[paper-1.20.4.jar:git-Paper-446]
at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:431) ~[paper-1.20.4.jar:git-Paper-446]
at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:309) ~[paper-1.20.4.jar:git-Paper-446]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1131) ~[paper-1.20.4.jar:git-Paper-446]
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:319) ~[paper-1.20.4.jar:git-Paper-446]
at java.lang.Thread.run(Thread.java:1623) ~[?:?]
plugins {
kotlin("jvm") version "2.0.20-Beta2"
id("com.github.johnrengelman.shadow") version "8.1.1"
id("org.springframework.boot") version "3.2.2"
id("io.spring.dependency-management") version "1.1.4"
kotlin("plugin.spring") version "1.9.22"
kotlin("plugin.jpa") version "1.9.22"
id("java")
}
group = "mc.plugin"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
maven("https://repo.papermc.io/repository/maven-public/") {
name = "papermc-repo"
}
maven("https://oss.sonatype.org/content/groups/public/") {
name = "sonatype"
}
}
dependencies {
implementation("io.papermc.paper:paper-api:1.20.4-R0.1-SNAPSHOT")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
//
implementation("mysql:mysql-connector-java:8.0.33")
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.boot:spring-boot-starter-mustache")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("org.jetbrains.kotlin:kotlin-reflect")
runtimeOnly("com.h2database:h2")
runtimeOnly("org.springframework.boot:spring-boot-devtools")
testImplementation("org.springframework.boot:spring-boot-starter-test")
}
val targetJavaVersion = 17
kotlin {
jvmToolchain(targetJavaVersion)
}
tasks.build {
dependsOn("shadowJar")
}
tasks.shadowJar {
archiveFileName.set("YourPluginName.jar")
destinationDirectory.set(file("C:/Users/maxth/OneDrive/Desktop/Minecraft/NeuerServer/plugins"))
}
tasks.withType<Jar> {
manifest {
attributes(
"Main-Class" to "gg.flyte.template.PluginTemplate" // Deine Hauptklasse
)
}
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
// Stelle sicher, dass alle Ressourcen in die JAR-Datei aufgenommen werden
from(configurations.runtimeClasspath.get().filter { it.name.endsWith("jar") }.map { zipTree(it) })
}
springBoot {
mainClass = "gg.flyte.template.PluginTemplate"
}
tasks.bootJar {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
package gg.flyte.template
import AdminGuiCommand
import AdminGuiListener
import BossbarTimeManager
import ChatListener
import ClickPlayerListener
import HomeCommand
import HomeListener
import RealmListener
import RepairCommand
import SpawnListener
import TabListManager
import gg.flyte.template.ClickPlayer.ClickPlayerCommand
import gg.flyte.template.Firework.FireWorkManager
import gg.flyte.template.GernalCommands.DiscordCommand
import gg.flyte.template.GernalCommands.RankCommand
import gg.flyte.template.GernalCommands.SpawnCommand
import gg.flyte.template.GernalCommands.`break`.BreakCommand
import gg.flyte.template.GernalCommands.`break`.BreakLeaveListener
import gg.flyte.template.Money.MoneyCommand
import gg.flyte.template.Money.PayCommand
import gg.flyte.template.Player.DbListener
import gg.flyte.template.Player.DbListenerUpdate
import gg.flyte.template.realm.RandomLocationManager
import gg.flyte.template.realm.commands.BuildCommand
import gg.flyte.template.realm.commands.RealmCommand
import gg.flyte.template.repo.McPlayerService
import gg.flyte.template.scoreboard.ScoreBoardListener
import gg.flyte.template.tablisteManger.TabListListener
import org.bukkit.Bukkit
import org.bukkit.GameRule
import org.bukkit.entity.ArmorStand
import org.bukkit.entity.EntityType
import org.bukkit.event.Listener
import org.bukkit.plugin.java.JavaPlugin
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.context.ConfigurableApplicationContext
import org.springframework.context.annotation.ComponentScan
import org.springframework.context.annotation.Configuration
@Configuration
@ComponentScan(basePackages = ["gg.flyte.repo"])
class ServiceConfig
@SpringBootApplication
class PluginTemplate : JavaPlugin() {
private lateinit var springContext: ConfigurableApplicationContext
lateinit var tabListManager: TabListManager
lateinit var breakList: MutableList<String>
companion object {
lateinit var instance: PluginTemplate
}
fun registerEvent(listener: Listener) {
server.pluginManager.registerEvents(listener, instance)
}
override fun onEnable() {
startApplication()
instance = this
tabListManager = TabListManager()
breakList = mutableListOf<String>()
getCommand("rang")?.setExecutor(RankCommand())
getCommand("spawn")?.setExecutor(SpawnCommand())
getCommand("break")?.setExecutor(BreakCommand())
getCommand("discord")?.setExecutor(DiscordCommand())
getCommand("repair")?.setExecutor(RepairCommand())
getCommand("money")?.setExecutor(MoneyCommand())
getCommand("pay")?.setExecutor(PayCommand())
getCommand("home")?.setExecutor(HomeCommand(this))
getCommand("realm")?.setExecutor(RealmCommand())
getCommand("build")?.setExecutor(BuildCommand())
getCommand("adminmenu")?.setExecutor(AdminGuiCommand())
getCommand("click")?.setExecutor(ClickPlayerCommand())
registerEvent(DbListenerUpdate(instance)) // have to be first
registerEvent(RealmListener(instance))
registerEvent(AdminGuiListener(instance))
registerEvent(ChatListener(instance))
registerEvent(BreakLeaveListener(instance))
registerEvent(ScoreBoardListener(instance))
registerEvent(TabListListener(instance))
registerEvent(SpawnListener(instance))
registerEvent(HomeListener(instance))
registerEvent(ClickPlayerListener(instance))
registerEvent(DbListener(instance)) // have to be the last
gameRules()
spawnEntitysOnSpawn()
RandomLocationManager.create10StartRandomLocation()
FireWorkManager().startSunriseSunsetTask()
Bukkit.getServer().consoleSender.sendMessage("§6Server AKTIV")
BossbarTimeManager().startDisplayThread()
}
override fun onDisable() {
removeEntityOnSpawn()
BossbarTimeManager().cancelDisplayThread()
}
private fun startApplication() {
springContext = SpringApplication.run(PluginTemplate::class.java)
}
private fun gameRules() {
val spawn = Bukkit.getWorld("world")
spawn?.setGameRule(GameRule.KEEP_INVENTORY, false)
spawn?.setGameRule(GameRule.DO_FIRE_TICK, false)
spawn!!.setGameRule(GameRule.FALL_DAMAGE, false)
}
private fun spawnEntitysOnSpawn() {
val world = Bukkit.getWorld("world")
val armorStand = world?.spawnEntity(DefaultPlayer.spawnPNG, EntityType.ARMOR_STAND) as ArmorStand
armorStand.isVisible = false
armorStand.customName = "界"
armorStand.isCustomNameVisible = true
}
private fun removeEntityOnSpawn() {
val spawn = Bukkit.getWorld("world")
spawn?.entities?.filter { it.type == EntityType.ARMOR_STAND }?.forEach { it.remove() }
}
}