infobip/infobip-spring-data-querydsl

Native image with GraaalVM does not work.

Closed this issue ยท 4 comments

Hi @lpandzic
After building a native image for my project using this library the executable comes with the following error:

Probably this needs to be included with a PR to the GraalVM Reachability Metadata Repository

Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'organizationApiController': Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'organizationApiServiceFacadeImpl': Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'organizationServiceImpl': Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'organizationQDSLRepository': Unsatisfied dependency expressed through method 'setSQLQueryFactory' parameter 0: Error creating bean with name 'sqlQueryFactory': Unsatisfied dependency expressed through method 'sqlQueryFactory' parameter 0: Error creating bean with name 'querydslSqlConfiguration': Unsatisfied dependency expressed through method 'querydslSqlConfiguration' parameter 0: Error creating bean with name 'sqlTemplates': Instantiation of supplied bean failed


Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sqlQueryFactory': Unsatisfied dependency expressed through method 'sqlQueryFactory' parameter 0: Error creating bean with name 'querydslSqlConfiguration': Unsatisfied dependency expressed through method 'querydslSqlConfiguration' parameter 0: Error creating bean with name 'sqlTemplates': Instantiation of supplied bean failed
	at org.springframework.beans.factory.aot.BeanInstanceSupplier.resolveAutowiredArgument(BeanInstanceSupplier.java:344) ~[na:na]
	at org.springframework.beans.factory.aot.BeanInstanceSupplier.resolveArguments(BeanInstanceSupplier.java:264) ~[na:na]
	at org.springframework.beans.factory.aot.BeanInstanceSupplier.get(BeanInstanceSupplier.java:204) ~[na:na]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier(DefaultListableBeanFactory.java:947) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1218) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1162) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1441) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1348) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.aot.AutowiredMethodArgumentsResolver.resolveArguments(AutowiredMethodArgumentsResolver.java:179) ~[na:na]
	... 75 common frames omitted
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'querydslSqlConfiguration': Unsatisfied dependency expressed through method 'querydslSqlConfiguration' parameter 0: Error creating bean with name 'sqlTemplates': Instantiation of supplied bean failed
	at org.springframework.beans.factory.aot.BeanInstanceSupplier.resolveAutowiredArgument(BeanInstanceSupplier.java:344) ~[na:na]
	at org.springframework.beans.factory.aot.BeanInstanceSupplier.resolveArguments(BeanInstanceSupplier.java:264) ~[na:na]
	at org.springframework.beans.factory.aot.BeanInstanceSupplier.get(BeanInstanceSupplier.java:204) ~[na:na]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier(DefaultListableBeanFactory.java:947) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1218) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1162) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1441) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1348) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:911) ~[na:na]
	at org.springframework.beans.factory.support.RegisteredBean.resolveAutowiredArgument(RegisteredBean.java:229) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.aot.BeanInstanceSupplier.resolveAutowiredArgument(BeanInstanceSupplier.java:341) ~[na:na]
	... 90 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlTemplates': Instantiation of supplied bean failed
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1224) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1162) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1441) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1348) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:911) ~[na:na]
	at org.springframework.beans.factory.support.RegisteredBean.resolveAutowiredArgument(RegisteredBean.java:229) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.aot.BeanInstanceSupplier.resolveAutowiredArgument(BeanInstanceSupplier.java:341) ~[na:na]
	... 107 common frames omitted
Caused by: java.lang.ExceptionInInitializerError: null
	at com.querydsl.sql.SQLTemplates.<init>(SQLTemplates.java:245) ~[demo:na]
	at com.querydsl.sql.SQLTemplates.<clinit>(SQLTemplates.java:55) ~[demo:na]
	at java.base@21.0.1/java.lang.Class.ensureInitialized(DynamicHub.java:595) ~[demo:na]
	at com.example.demo.Testloom21Application.sqlTemplates(Testloom21Application.java:21) ~[demo:na]
	at com.example.demo.Testloom21Application$$SpringCGLIB$$0.CGLIB$sqlTemplates$0(<generated>) ~[demo:na]
	at com.example.demo.Testloom21Application$$SpringCGLIB$$FastClass$$1.invoke(<generated>) ~[demo:na]
	at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:258) ~[demo:6.1.0-RC2]
	at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) ~[na:na]
	at com.example.demo.Testloom21Application$$SpringCGLIB$$0.sqlTemplates(<generated>) ~[demo:na]
	at com.example.demo.Testloom21Application__BeanDefinitions.lambda$getSqlTemplatesInstanceSupplier$0(Testloom21Application__BeanDefinitions.java:29) ~[na:na]
	at org.springframework.util.function.ThrowingFunction.apply(ThrowingFunction.java:63) ~[demo:6.1.0-RC2]
	at org.springframework.util.function.ThrowingFunction.apply(ThrowingFunction.java:51) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.aot.BeanInstanceSupplier.lambda$withGenerator$0(BeanInstanceSupplier.java:171) ~[na:na]
	at org.springframework.util.function.ThrowingBiFunction.apply(ThrowingBiFunction.java:68) ~[demo:6.1.0-RC2]
	at org.springframework.util.function.ThrowingBiFunction.apply(ThrowingBiFunction.java:54) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.aot.BeanInstanceSupplier.lambda$get$2(BeanInstanceSupplier.java:206) ~[na:na]
	at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58) ~[demo:6.1.0-RC2]
	at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.aot.BeanInstanceSupplier.invokeBeanSupplier(BeanInstanceSupplier.java:218) ~[na:na]
	at org.springframework.beans.factory.aot.BeanInstanceSupplier.get(BeanInstanceSupplier.java:206) ~[na:na]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier(DefaultListableBeanFactory.java:947) ~[demo:6.1.0-RC2]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1218) ~[demo:6.1.0-RC2]
	... 120 common frames omitted
Caused by: java.lang.NullPointerException: null
	at java.base@21.0.1/java.io.Reader.<init>(Reader.java:168) ~[demo:na]
	at java.base@21.0.1/java.io.InputStreamReader.<init>(InputStreamReader.java:88) ~[demo:na]
	at com.querydsl.sql.Keywords.readLines(Keywords.java:31) ~[na:na]
	at com.querydsl.sql.Keywords.<clinit>(Keywords.java:40) ~[na:na]
	... 142 common frames omitted

I don't see any mention of querydsl in that project. Is querydsl supported?

@lpandzic Haven't found anything about the support of QueryDSL for the native image. I thought adding the infobip-spring-data-r2dbc-querydsl-boot-starter to [GraalVM Reachability Metadata Repository] https://github.com/oracle/graalvm-reachability-metadata/blob/master/library-and-framework-list.json
would solve the issue.

Feel free to do so, I have no experience with GraalVM so I'm not of much help there.

Closing this one down as I don't see anything to do in this project.