Ok, that's weird. Looks like some environment-specific class loader issue. You mention modules. Are you using OSGI or JPMS (Java modules) by any chance?
Andrus > On Apr 14, 2025, at 9:00 AM, Stefano Morini > <stefano.mor...@cpsistemi.it.INVALID> wrote: > > Hi Andrus, > > Thanks. Yes It seems using the same cayenneRuntime. > > I'm trying to use Cayenne from Ignition Module. (The same code runs if I > start it from a main) > > In the Module Setup I have to create runtime and context as I saw in cayenne > getting started. > > public void setup(GatewayContext gatewayContext) { > ServerRuntime cayenneRuntime =ServerRuntime.builder() > > .addConfig("it/cpsistemi/ignition/mes/core/scripting/cayenne-Cayenne.xml") > .build(); > > DataManager dataManager =new DataManager(cayenneRuntime.newContext()); > > > XML files are present in jar and the Ignition module. > The instruction newContext() returns this exception: > DI container has no binding for key <BindingKey: > org.apache.cayenne.configuration.ObjectContextFactory> > 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 > it.cpsistemi.ignition.mes.core.scripting.GatewayHook.setup(GatewayHook.java:50) > at > com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$LoadedModule.setup(ModuleManagerImpl.java:2364) > at > com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.startupModule(ModuleManagerImpl.java:1179) > at > com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$2.call(ModuleManagerImpl.java:726) > at > com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.executeModuleOperation(ModuleManagerImpl.java:902) > at > com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.installModuleInternal(ModuleManagerImpl.java:692) > at > com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$InstallCommand.execute(ModuleManagerImpl.java:1861) > at > com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$Receiver.receiveCall(ModuleManagerImpl.java:1814) > at > com.inductiveautomation.ignition.gateway.redundancy.QueueableMessageReceiver.receiveCall(QueueableMessageReceiver.java:47) > at > com.inductiveautomation.ignition.gateway.redundancy.RedundancyManagerImpl.dispatchMessage(RedundancyManagerImpl.java:1030) > at > com.inductiveautomation.ignition.gateway.redundancy.RedundancyManagerImpl$ExecuteTask.run(RedundancyManagerImpl.java:1098) > at > com.inductiveautomation.ignition.common.execution.impl.BasicExecutionEngine$ThrowableCatchingRunnable.run(BasicExecutionEngine.java:544) > at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown > Source) > at java.base/java.util.concurrent.FutureTask.run(Unknown Source) > at > java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown > Source) > at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown > Source) > at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown > Source) > at java.base/java.lang.Thread.run(Unknown Source) > > Stefano > > Il 14/04/2025 08:09, Andrus Adamchik ha scritto: >> Hi Stefano, >> >> I left a similar comment on Stack Overflow. The code here and the stack >> trace are two different things. You need to debug the GatewayHook.setup(..) >> method. Check a couple of things - Is it using the same runtime as below? Is >> it invoked after that runtime was already instantiated? >> >> Andrus >> >> >>> On Apr 10, 2025, at 6:49 PM, Stefano >>> Morini<stefano.mor...@cpsistemi.it.INVALID> wrote: >>> >>> Hi all, >>> >>> I’m new in Apache Cayenne 4.2.2. >>> >>> I have a problem: every time I try to do this >>> ServerRuntime cayenneRuntime = ServerRuntime.builder() >>> >>> .addConfig("it/cpsistemi/ignition/mes/core/scripting/cayenne-Cayenne.xml") >>> .build(); >>> DataManager dataManager = new DataManager(cayenneRuntime.newContext()); >>> >>> Config files are in resources >>> <Screenshot 2025-04-10 alle 18.43.55.png> >>> >>> I have this error >>> org.apache.cayenne.di.DIRuntimeException: DI container has no binding for >>> key <BindingKey: org.apache.cayenne.resource.ResourceLocator> >>> >>> at >>> org.apache.cayenne.di.spi.DefaultInjector.getProvider(DefaultInjector.java:158) >>> >>> at >>> org.apache.cayenne.di.spi.DefaultInjector.getInstance(DefaultInjector.java:139) >>> >>> at >>> org.apache.cayenne.di.spi.FieldInjectingProvider.value(FieldInjectingProvider.java:103) >>> >>> at >>> org.apache.cayenne.di.spi.FieldInjectingProvider.injectMember(FieldInjectingProvider.java:68) >>> >>> at >>> org.apache.cayenne.di.spi.FieldInjectingProvider.injectMembers(FieldInjectingProvider.java:59) >>> >>> at >>> org.apache.cayenne.di.spi.FieldInjectingProvider.injectMembers(FieldInjectingProvider.java:63) >>> >>> at >>> org.apache.cayenne.di.spi.FieldInjectingProvider.get(FieldInjectingProvider.java:44) >>> >>> at >>> org.apache.cayenne.di.spi.CustomProvidersProvider.get(CustomProvidersProvider.java:39) >>> >>> at >>> org.apache.cayenne.di.spi.FieldInjectingProvider.get(FieldInjectingProvider.java:43) >>> >>> at >>> org.apache.cayenne.di.spi.DefaultScopeProvider.get(DefaultScopeProvider.java:50) >>> >>> at >>> org.apache.cayenne.di.spi.DefaultInjector.getInstance(DefaultInjector.java:134) >>> >>> at >>> it.cpsistemi.ignition.mes.core.scripting.GatewayHook.setup(GatewayHook.java:43) >>> >>> Any help will be appreciated. >>> Stefano