Hi Andrus; Thanks for coming back to me. It seems that for my situation, I need to let the build tool know that each of the "injectable" classes should be allowed to be scanned for constructors in the build product by supplying the Graal build-tool with;
``` -H:ReflectionConfigurationFiles=/...path.../reflection.json ``` The snipped `reflection.json` file looks like; ``` [ { "name": "org.apache.cayenne.access.DataDomain", "queryAllDeclaredConstructors": true }, { "name": "org.apache.cayenne.access.dbsync.DefaultSchemaUpdateStrategyFactory", "queryAllDeclaredConstructors": true }, ....... continued .... ] ``` There are entries for 117 classes. It seems this file can be supplied with the library jar in some way in order to instruct the Graal build tool. Maybe once I have this fully working I can add a PR for it to cover the known classes in the jar(s). Regards. -- Andrew Lindesay On Wed, 5 Apr 2023, at 20:31, Andrus Adamchik wrote: > Hi Andrew, > > I don't have first-hand experience, but Cayenne was reported to work > with GraalVM. E.g.: > https://lists.apache.org/list?user@cayenne.apache.org:2023-1:graalvm > > Andrus > > >> On Apr 5, 2023, at 10:26 AM, Andrew Lindesay <a...@lindesay.co.nz> wrote: >> >> Hello; >> >> Has anybody here experimented with running an application using Cayenne with >> the GraalVM "native image" compiler? The resultant executable seems to be >> having a problem with the DI system at run time; probably because there's >> some reflection going on in there -- seems likely. Is there any >> documentation / guidance about how to start the `ServerRuntime` without the >> DI mechanism? >> >> Caused by: org.apache.cayenne.di.DIRuntimeException: No applicable >> constructor is found for constructor injection in class >> 'org.apache.cayenne.log.Slf4jJdbcEventLogger' >> at >> org.apache.cayenne.di.spi.ConstructorInjectingProvider.initConstructor(ConstructorInjectingProvider.java:103) >> ~[na:na] >> at >> org.apache.cayenne.di.spi.ConstructorInjectingProvider.<init>(ConstructorInjectingProvider.java:42) >> ~[na:na] >> at >> org.apache.cayenne.di.spi.DefaultBindingBuilder.to(DefaultBindingBuilder.java:44) >> ~[na:na] >> at >> org.apache.cayenne.configuration.server.ServerModule.configure(ServerModule.java:349) >> ~[na:na] >> at >> org.apache.cayenne.di.spi.DefaultInjector.<init>(DefaultInjector.java:68) >> ~[na:na] >> at >> org.apache.cayenne.di.DIBootstrap.createInjector(DIBootstrap.java:38) >> ~[na:na] >> at >> org.apache.cayenne.di.DIBootstrap.createInjector(DIBootstrap.java:46) >> ~[na:na] >> at >> org.apache.cayenne.configuration.CayenneRuntime.<init>(CayenneRuntime.java:79) >> ~[haikudepotserver-webapp:4.1.1] >> at >> org.apache.cayenne.configuration.server.ServerRuntime.<init>(ServerRuntime.java:75) >> ~[haikudepotserver-webapp:4.1.1] >> at >> org.apache.cayenne.configuration.server.ServerRuntimeBuilder.build(ServerRuntimeBuilder.java:207) >> ~[na:na] >> >> Regards. >> >> -- >> Andrew Lindesay