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

Reply via email to