Hi Andrus, Of course:
org.apache.cayenne.di.DIRuntimeException: DI container has no binding for key <BindingKey: org.apache.cayenne.configuration.ObjectContextFactory> at org.apache.cayenne.di.spi.DefaultInjector.getProvider(DefaultInjector.java:158) ~[?:?] at org.apache.cayenne.di.spi.DefaultInjector.getProvider(DefaultInjector.java:144) ~[?:?] at org.apache.cayenne.di.spi.DefaultInjector.getInstance(DefaultInjector.java:134) ~[?:?] at org.apache.cayenne.configuration.CayenneRuntime.newContext(CayenneRuntime.java:124) ~[?:?] at io.github.phuskus.firstspigotplugin.StatisticsController.reportPlayerConnectionEvent(StatisticsController.java:20) ~[?:?] at io.github.phuskus.firstspigotplugin.FirstSpigotPlugin.onEnable(FirstSpigotPlugin.java:29) ~[?:?] at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?] at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:342) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?] at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:480) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?] at org.bukkit.craftbukkit.v1_18_R1.CraftServer.enablePlugin(CraftServer.java:521) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3443-Spigot-699290c-2c1e499] at org.bukkit.craftbukkit.v1_18_R1.CraftServer.enablePlugins(CraftServer.java:435) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3443-Spigot-699290c-2c1e499] at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:612) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3443-Spigot-699290c-2c1e499] at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:414) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3443-Spigot-699290c-2c1e499] at net.minecraft.server.dedicated.DedicatedServer.e(DedicatedServer.java:262) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3443-Spigot-699290c-2c1e499] at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:994) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3443-Spigot-699290c-2c1e499] at net.minecraft.server.MinecraftServer.lambda$0(MinecraftServer.java:304) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3443-Spigot-699290c-2c1e499] at java.lang.Thread.run(Thread.java:833) [?:?] On Wed, Mar 23, 2022 at 11:49 AM Andrus Adamchik <aadamc...@gmail.com> wrote: > Hi Stefan, > > Could you include a full stack trace please? > > Thanks, > Andrus > > > On Mar 23, 2022, at 1:04 AM, Stefan Stegic <stefanste...@gmail.com> > wrote: > > > > Hi, > > > > > > First some context: I'm working on a custom Minecraft server (Spigot) > > plugin. It's just a JAR that you export and place somewhere in the > server's > > folder structure. > > > > I wrote a simple insert query via Cayenne's API. It works when I run the > > example JAR directly via executing Main from the command line (java -cp > > myPlugin.jar path.to.Main), but it fails with the following error when > > executed by the server in my plugin's OnEnable lifecycle hook: > > > > org.apache.cayenne.di.DIRuntimeException: DI container has no binding for > > key <BindingKey: org.apache.cayenne.configuration.ObjectContextFactory> > > > > > > My initial theory was that it's being executed from a different thread, > so > > the DI system might not have access to that dependency for some reason, > but > > it seems like the server executes this lifecycle hook from the main > thread > > as well (though they've named the thread "Server thread", and I don't > know > > how to check if it's the main thread for sure). Not sure if this is a > > promising direction to pursue, but I got the hunch by looking at the > > threadInjector bits of Cayenne's DI container docs. > > > > My example looks like this: > > > > ServerRuntime cayenneRuntime = ServerRuntime.builder() > > .addConfig("cayenne-project.xml") > > .build();ObjectContext ctx = cayenneRuntime.newContext(); > > PlayerConnectionEvent newEvent = > > ctx.newObject(PlayerConnectionEvent.class); > > newEvent.setEventType(eType); > > newEvent.setPlayerName(playerName); > > newEvent.setIpAddress(ipAddress); > > newEvent.setTimestampUnixSeconds(unixSeconds); > > > > ctx.commitChanges(); > > > > Some help would be greatly appreciated, thanks in advance! > > -- > > S poštovanjem, > > *Stefan Stegić* > > -- S poštovanjem, *Stefan Stegić*