azure-sdk-for-java icon indicating copy to clipboard operation
azure-sdk-for-java copied to clipboard

[BUG] Azure servicebus has a NoSuchMethodException after native compile

Open khauser opened this issue 1 year ago • 3 comments

Describe the bug I do have an application connecting itself to the azure servicebus. It works well as normal Java-Code but not after I convert it into native code.

Exception or Stack Trace

Caused by: java.lang.NoSuchMethodException: com.azure.servicebus.jms.ServiceBusJmsConnectionFactory.<init>(java.lang.String, com.azure.servicebus.jms.ServiceBusJmsConnectionFactorySettings)
        at [email protected]/java.lang.Class.checkMethod(DynamicHub.java:1075)
        at [email protected]/java.lang.Class.getConstructor0(DynamicHub.java:1238)
        at [email protected]/java.lang.Class.getConstructor(DynamicHub.java:2442)
        at com.azure.spring.cloud.autoconfigure.implementation.jms.ServiceBusJmsConnectionFactoryFactory.createConnectionFactoryInstance(ServiceBusJmsConnectionFactoryFactory.java:80)

To Reproduce build.gradle:

plugins {
     // spring boot plugin
    id 'org.springframework.boot' version '3.3.6'
    id 'io.spring.dependency-management' version '1.1.6'
...
graalvmNative {
  binaries {

      main {
          buildArgs.add('-Djava.security.properties=' + file("$rootDir/src/main/resources/custom.security").absolutePath)
          buildArgs.add('--initialize-at-build-time=org.slf4j')
      }
  }
}

bootBuildImage {
    builder.set("paketobuildpacks/builder-jammy-base:latest")

    imageName = "ishisteacr.azurecr.io/iste/iste-message"
    if (project.hasProperty('imageVersion')) {
        tags.add("ishisteacr.azurecr.io/iste/iste-message:${project.imageVersion}")
    } else {
        tags.add("ishisteacr.azurecr.io/iste/iste-message:$version")
    }
    environment = [
            'BP_JVM_VERSION'                 : "21",
            'BP_NATIVE_IMAGE'                : 'true',
            'BP_NATIVE_IMAGE_BUILD_ARGUMENTS': '-H:+AddAllCharsets ' + '-H:NumberOfThreads=4 ' +
                    '--initialize-at-build-time=org.slf4j ' +
                    '-Djava.security.properties=/workspace/BOOT-INF/classes/custom.security ',
    ]
}

NativeRuntimeHints.java:

@ImportRuntimeHints(NativeRuntimeHints.MyRuntimeHintsRegistrar.class)
@Configuration
public class NativeRuntimeHints
{
    static class MyRuntimeHintsRegistrar implements RuntimeHintsRegistrar
    {
        @Override
        public void registerHints(RuntimeHints hints, @Nullable ClassLoader classLoader)
        {
            hints.resources().registerPattern("*.yml");
            hints.resources().registerPattern("*.security");

            hints.reflection()
                 .registerType(TypeReference.of("com.azure.core.util.logging.ClientLogger"),
                                 MemberCategory.INVOKE_DECLARED_CONSTRUCTORS);
            hints.reflection()
                 .registerType(TypeReference.of("ch.qos.logback.core.util.StatusPrinter2"),
                                 MemberCategory.INVOKE_DECLARED_CONSTRUCTORS);

        }
    }
}

./gradlew nativeCompile and ./gradlew bootBuildImage are successful but do fail when starting the exe or the image.

Expected behavior The native application should start without exception.

Setup (please complete the following information):

  • OS: Windows
  • IDE: eclipse
  • Library/Libraries: implementation group: 'com.azure.spring', name: 'spring-cloud-azure-starter-servicebus-jms', version: "5.18.0"
  • Java version: Java(TM) SE Runtime Environment Oracle GraalVM 21.0.2+13.1 (build 21.0.2+13-LTS-jvmci-23.1-b30)
  • App Server/Environment: Tomcat
  • Frameworks: Spring Boot+native

If you suspect a dependency version mismatch (e.g. you see NoClassDefFoundError, NoSuchMethodError or similar), please check out Troubleshoot dependency version conflict article first. If it doesn't provide solution for the problem, please provide:

  • verbose dependency tree (mvn dependency:tree -Dverbose)
  • exception message, full stack trace, and any available logs
Microsoft Windows [Version 10.0.22631.4460]
(c) Microsoft Corporation. All rights reserved.

d:\Arbeit\azureISTE\test-iste-message\build\native\nativeCompile>test-iste-message.exe
 (    (                      *
 )\ ) )\ )  *   )          (  `
(()/((()/(` )  /( (        )\))(     (             )  (  (     (
 /(_))/(_))( )(_)))\  ___ ((_)()\   ))\ (   (   ( /(  )\))(   ))\
(_)) (_)) (_(_())((_)|___|(_()((_) /((_))\  )\  )(_))((_))\  /((_)
|_ _|/ __||_   _|| __|    |  \/  |(_)) ((_)((_)((_)_  (()(_)(_))
 | | \__ \  | |  | _|     | |\/| |/ -_)(_-<(_-</ _` |/ _` | / -_)
|___||___/  |_|  |___|    |_|  |_|\___|/__//__/\__,_|\__, | \___|
                                                     |___/

2024-11-26T13:52:50.104+01:00  INFO 6780 --- [iste-message] [           main] c.i.iste.message.ISTEMessageApplication  : Starting AOT-processed ISTEMessageApplication using Java 21.0.2 with PID 6780 (d:\Arbeit\azureISTE\test-iste-message\build\native\nativeCompile\test-iste-message.exe started by KHauser in d:\Arbeit\azureISTE\test-iste-message\build\native\nativeCompile)
2024-11-26T13:52:50.105+01:00  INFO 6780 --- [iste-message] [           main] c.i.iste.message.ISTEMessageApplication  : The following 1 profile is active: "default"
2024-11-26T13:52:50.106+01:00  INFO 6780 --- [iste-message] [           main] o.s.cloud.context.scope.GenericScope     : BeanFactory id=395397df-6460-3182-9f22-7238ff4a6e0f
2024-11-26T13:52:50.108+01:00  WARN 6780 --- [iste-message] [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.client.loadbalancer.LoadBalancerAutoConfiguration$DeferringLoadBalancerInterceptorConfig' of type [org.springframework.cloud.client.loadbalancer.LoadBalancerAutoConfiguration$DeferringLoadBalancerInterceptorConfig] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [lbRestClientPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE.
2024-11-26T13:52:50.109+01:00  WARN 6780 --- [iste-message] [           main] trationDelegate$BeanPostProcessorChecker : Bean 'deferringLoadBalancerInterceptor' of type [org.springframework.cloud.client.loadbalancer.DeferringLoadBalancerInterceptor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [lbRestClientPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE.
2024-11-26T13:52:50.126+01:00  INFO 6780 --- [iste-message] [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port 8080 (http)
2024-11-26T13:52:50.127+01:00  INFO 6780 --- [iste-message] [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2024-11-26T13:52:50.127+01:00  INFO 6780 --- [iste-message] [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.33]
2024-11-26T13:52:50.133+01:00  INFO 6780 --- [iste-message] [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2024-11-26T13:52:50.133+01:00  INFO 6780 --- [iste-message] [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 28 ms
2024-11-26T13:52:50.152+01:00  WARN 6780 --- [iste-message] [           main] w.s.c.ServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'asyncMessageController': Unsatisfied dependency expressed through field 'messageService': Error creating bean with name 'messageService': Unsatisfied dependency expressed through field 'serviceFactory': Error creating bean with name 'messageServiceFactory': Unsatisfied dependency expressed through field 'senderList': Error creating bean with name 'azureBusMessageSender': Unsatisfied dependency expressed through field 'azureBusService': Error creating bean with name 'azureBusService': Unsatisfied dependency expressed through field 'jmsTemplate': Error creating bean with name 'jmsTemplate': Unsatisfied dependency expressed through method 'jmsTemplate' parameter 0: Error creating bean with name 'jmsPoolConnectionFactory': Instantiation of supplied bean failed
2024-11-26T13:52:50.153+01:00  INFO 6780 --- [iste-message] [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
Application run failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'asyncMessageController': Unsatisfied dependency expressed through field 'messageService': Error creating bean with name 'messageService': Unsatisfied dependency expressed through field 'serviceFactory': Error creating bean with name 'messageServiceFactory': Unsatisfied dependency expressed through field 'senderList': Error creating bean with name 'azureBusMessageSender': Unsatisfied dependency expressed through field 'azureBusService': Error creating bean with name 'azureBusService': Unsatisfied dependency expressed through field 'jmsTemplate': Error creating bean with name 'jmsTemplate': Unsatisfied dependency expressed through method 'jmsTemplate' parameter 0: Error creating bean with name 'jmsPoolConnectionFactory': Instantiation of supplied bean failed
        at org.springframework.beans.factory.aot.AutowiredFieldValueResolver.resolveValue(AutowiredFieldValueResolver.java:194)
        at org.springframework.beans.factory.aot.AutowiredFieldValueResolver.resolveAndSet(AutowiredFieldValueResolver.java:167)
        at com.intershop.iste.message.controller.AsyncMessageController__Autowiring.apply(AsyncMessageController__Autowiring.java:18)
        at org.springframework.beans.factory.support.InstanceSupplier$1.get(InstanceSupplier.java:83)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier(DefaultListableBeanFactory.java:949)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1237)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1180)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522)
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:975)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:971)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:625)
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:335)
        at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:149)
        at com.intershop.iste.message.ISTEMessageApplication.main(ISTEMessageApplication.java:11)
        at [email protected]/java.lang.invoke.LambdaForm$DMH/sa346b79c.invokeStaticInit(LambdaForm$DMH)
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'messageService': Unsatisfied dependency expressed through field 'serviceFactory': Error creating bean with name 'messageServiceFactory': Unsatisfied dependency expressed through field 'senderList': Error creating bean with name 'azureBusMessageSender': Unsatisfied dependency expressed through field 'azureBusService': Error creating bean with name 'azureBusService': Unsatisfied dependency expressed through field 'jmsTemplate': Error creating bean with name 'jmsTemplate': Unsatisfied dependency expressed through method 'jmsTemplate' parameter 0: Error creating bean with name 'jmsPoolConnectionFactory': Instantiation of supplied bean failed
        at org.springframework.beans.factory.aot.AutowiredFieldValueResolver.resolveValue(AutowiredFieldValueResolver.java:194)
        at org.springframework.beans.factory.aot.AutowiredFieldValueResolver.resolveAndSet(AutowiredFieldValueResolver.java:167)
        at com.intershop.iste.message.service.MessageService__Autowiring.apply(MessageService__Autowiring.java:16)
        at org.springframework.beans.factory.support.InstanceSupplier$1.get(InstanceSupplier.java:83)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier(DefaultListableBeanFactory.java:949)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1237)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1180)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522)
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
        at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1443)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353)
        at org.springframework.beans.factory.aot.AutowiredFieldValueResolver.resolveValue(AutowiredFieldValueResolver.java:188)
        ... 22 more
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'messageServiceFactory': Unsatisfied dependency expressed through field 'senderList': Error creating bean with name 'azureBusMessageSender': Unsatisfied dependency expressed through field 'azureBusService': Error creating bean with name 'azureBusService': Unsatisfied dependency expressed through field 'jmsTemplate': Error creating bean with name 'jmsTemplate': Unsatisfied dependency expressed through method 'jmsTemplate' parameter 0: Error creating bean with name 'jmsPoolConnectionFactory': Instantiation of supplied bean failed
        at org.springframework.beans.factory.aot.AutowiredFieldValueResolver.resolveValue(AutowiredFieldValueResolver.java:194)
        at org.springframework.beans.factory.aot.AutowiredFieldValueResolver.resolveAndSet(AutowiredFieldValueResolver.java:167)
        at com.intershop.iste.message.service.MessageServiceFactory__Autowiring.apply(MessageServiceFactory__Autowiring.java:17)
        at org.springframework.beans.factory.support.InstanceSupplier$1.get(InstanceSupplier.java:83)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier(DefaultListableBeanFactory.java:949)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1237)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1180)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522)
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
        at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1443)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353)
        at org.springframework.beans.factory.aot.AutowiredFieldValueResolver.resolveValue(AutowiredFieldValueResolver.java:188)
        ... 38 more
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'azureBusMessageSender': Unsatisfied dependency expressed through field 'azureBusService': Error creating bean with name 'azureBusService': Unsatisfied dependency expressed through field 'jmsTemplate': Error creating bean with name 'jmsTemplate': Unsatisfied dependency expressed through method 'jmsTemplate' parameter 0: Error creating bean with name 'jmsPoolConnectionFactory': Instantiation of supplied bean failed
        at org.springframework.beans.factory.aot.AutowiredFieldValueResolver.resolveValue(AutowiredFieldValueResolver.java:194)
        at org.springframework.beans.factory.aot.AutowiredFieldValueResolver.resolveAndSet(AutowiredFieldValueResolver.java:167)
        at com.intershop.iste.message.service.azure.AzureBusMessageSender__Autowiring.apply(AzureBusMessageSender__Autowiring.java:17)
        at org.springframework.beans.factory.support.InstanceSupplier$1.get(InstanceSupplier.java:83)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier(DefaultListableBeanFactory.java:949)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1237)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1180)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522)
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
        at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.addCandidateEntry(DefaultListableBeanFactory.java:1689)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1653)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveMultipleBeanCollection(DefaultListableBeanFactory.java:1543)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveMultipleBeans(DefaultListableBeanFactory.java:1511)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1392)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353)
        at org.springframework.beans.factory.aot.AutowiredFieldValueResolver.resolveValue(AutowiredFieldValueResolver.java:188)
        ... 54 more
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'azureBusService': Unsatisfied dependency expressed through field 'jmsTemplate': Error creating bean with name 'jmsTemplate': Unsatisfied dependency expressed through method 'jmsTemplate' parameter 0: Error creating bean with name 'jmsPoolConnectionFactory': Instantiation of supplied bean failed
        at org.springframework.beans.factory.aot.AutowiredFieldValueResolver.resolveValue(AutowiredFieldValueResolver.java:194)
        at org.springframework.beans.factory.aot.AutowiredFieldValueResolver.resolveAndSet(AutowiredFieldValueResolver.java:167)
        at com.intershop.iste.message.service.azure.AzureBusService__Autowiring.apply(AzureBusService__Autowiring.java:16)
        at org.springframework.beans.factory.support.InstanceSupplier$1.get(InstanceSupplier.java:83)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier(DefaultListableBeanFactory.java:949)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1237)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1180)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522)
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
        at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1443)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353)
        at org.springframework.beans.factory.aot.AutowiredFieldValueResolver.resolveValue(AutowiredFieldValueResolver.java:188)
        ... 74 more
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jmsTemplate': Unsatisfied dependency expressed through method 'jmsTemplate' parameter 0: Error creating bean with name 'jmsPoolConnectionFactory': Instantiation of supplied bean failed
        at org.springframework.beans.factory.aot.BeanInstanceSupplier.resolveAutowiredArgument(BeanInstanceSupplier.java:345)
        at org.springframework.beans.factory.aot.BeanInstanceSupplier.resolveArguments(BeanInstanceSupplier.java:265)
        at org.springframework.beans.factory.aot.BeanInstanceSupplier.get(BeanInstanceSupplier.java:204)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier(DefaultListableBeanFactory.java:949)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1237)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1180)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522)
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
        at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1443)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353)
        at org.springframework.beans.factory.aot.AutowiredFieldValueResolver.resolveValue(AutowiredFieldValueResolver.java:188)
        ... 90 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jmsPoolConnectionFactory': Instantiation of supplied bean failed
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1243)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1180)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522)
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
        at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1443)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353)
        at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:904)
        at org.springframework.beans.factory.support.RegisteredBean.resolveAutowiredArgument(RegisteredBean.java:253)
        at org.springframework.beans.factory.aot.BeanInstanceSupplier.resolveAutowiredArgument(BeanInstanceSupplier.java:342)
        ... 105 more
Caused by: java.lang.IllegalStateException: Unable to create JmsConnectionFactory
        at com.azure.spring.cloud.autoconfigure.implementation.jms.ServiceBusJmsConnectionFactoryFactory.createConnectionFactoryInstance(ServiceBusJmsConnectionFactoryFactory.java:86)
        at com.azure.spring.cloud.autoconfigure.implementation.jms.ServiceBusJmsConnectionFactoryFactory.createConnectionFactory(ServiceBusJmsConnectionFactoryFactory.java:43)
        at com.azure.spring.cloud.autoconfigure.implementation.jms.ServiceBusJmsConnectionFactoryConfiguration.createJmsConnectionFactory(ServiceBusJmsConnectionFactoryConfiguration.java:32)
        at com.azure.spring.cloud.autoconfigure.implementation.jms.ServiceBusJmsConnectionFactoryConfiguration$PooledConnectionFactoryConfiguration.jmsPoolConnectionFactory(ServiceBusJmsConnectionFactoryConfiguration.java:78)
        at com.azure.spring.cloud.autoconfigure.implementation.jms.ServiceBusJmsConnectionFactoryConfiguration__BeanDefinitions$PooledConnectionFactoryConfiguration.lambda$getJmsPoolConnectionFactoryInstanceSupplier$1(ServiceBusJmsConnectionFactoryConfiguration__BeanDefinitions.java:54)
        at org.springframework.util.function.ThrowingBiFunction.apply(ThrowingBiFunction.java:68)
        at org.springframework.util.function.ThrowingBiFunction.apply(ThrowingBiFunction.java:54)
        at org.springframework.beans.factory.aot.BeanInstanceSupplier.lambda$get$2(BeanInstanceSupplier.java:206)
        at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58)
        at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46)
        at org.springframework.beans.factory.aot.BeanInstanceSupplier.invokeBeanSupplier(BeanInstanceSupplier.java:219)
        at org.springframework.beans.factory.aot.BeanInstanceSupplier.get(BeanInstanceSupplier.java:206)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier(DefaultListableBeanFactory.java:949)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1237)
        ... 118 more
Caused by: java.lang.NoSuchMethodException: com.azure.servicebus.jms.ServiceBusJmsConnectionFactory.<init>(java.lang.String, com.azure.servicebus.jms.ServiceBusJmsConnectionFactorySettings)
        at [email protected]/java.lang.Class.checkMethod(DynamicHub.java:1075)
        at [email protected]/java.lang.Class.getConstructor0(DynamicHub.java:1238)
        at [email protected]/java.lang.Class.getConstructor(DynamicHub.java:2442)
        at com.azure.spring.cloud.autoconfigure.implementation.jms.ServiceBusJmsConnectionFactoryFactory.createConnectionFactoryInstance(ServiceBusJmsConnectionFactoryFactory.java:80)
        ... 131 more

Information Checklist Kindly make sure that you have added all the following information above and checkoff the required fields otherwise we will treat the issuer as an incomplete report

  • [x] Bug Description Added
  • [x] Repro Steps Added
  • [x] Setup information Added

khauser avatar Nov 26 '24 13:11 khauser

After upgrading to 5.19.0 I'm getting another error already during ./gradlew bootBuildImage:

2025-01-28T09:03:07.808+01:00  INFO 33128 --- [iste-message] [           main] rocessor$ProxyRegisteringAotContribution : Could not create proxy class for class java.util.concurrent.CompletableFuture (via class com.intershop.iste.message.controller.StorageController). Reason Could not generate CGLIB subclass of class java.util.concurrent.CompletableFuture: Common causes of this problem include using a final class or a non-visible class
Exception in thread "main" java.lang.IllegalStateException: Error processing bean with name 'jmsPoolConnectionFactory': instance supplier is not supported
        at org.springframework.beans.factory.aot.DefaultBeanRegistrationCodeFragments.getTarget(DefaultBeanRegistrationCodeFragments.java:83)
        at org.springframework.beans.factory.aot.BeanDefinitionMethodGenerator.generateBeanDefinitionMethod(BeanDefinitionMethodGenerator.java:85)
        at org.springframework.beans.factory.aot.BeanRegistrationsAotContribution.lambda$generateRegisterBeanDefinitionsMethod$2(BeanRegistrationsAotContribution.java:90)
        at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:986)
        at org.springframework.beans.factory.aot.BeanRegistrationsAotContribution.generateRegisterBeanDefinitionsMethod(BeanRegistrationsAotContribution.java:88)
        at org.springframework.beans.factory.aot.BeanRegistrationsAotContribution.lambda$applyTo$1(BeanRegistrationsAotContribution.java:73)
        at org.springframework.aot.generate.GeneratedMethod.<init>(GeneratedMethod.java:54)
        at org.springframework.aot.generate.GeneratedMethods.add(GeneratedMethods.java:112)
        at org.springframework.aot.generate.GeneratedMethods.add(GeneratedMethods.java:89)
        at org.springframework.beans.factory.aot.BeanRegistrationsAotContribution.applyTo(BeanRegistrationsAotContribution.java:72)
        at org.springframework.context.aot.BeanFactoryInitializationAotContributions.applyTo(BeanFactoryInitializationAotContributions.java:78)
        at org.springframework.context.aot.ApplicationContextAotGenerator.lambda$processAheadOfTime$0(ApplicationContextAotGenerator.java:58)
        at org.springframework.context.aot.ApplicationContextAotGenerator.withCglibClassHandler(ApplicationContextAotGenerator.java:67)
        at org.springframework.context.aot.ApplicationContextAotGenerator.processAheadOfTime(ApplicationContextAotGenerator.java:53)
        at org.springframework.context.aot.ContextAotProcessor.performAotProcessing(ContextAotProcessor.java:106)
        at org.springframework.context.aot.ContextAotProcessor.doProcess(ContextAotProcessor.java:84)
        at org.springframework.context.aot.ContextAotProcessor.doProcess(ContextAotProcessor.java:49)
        at org.springframework.context.aot.AbstractAotProcessor.process(AbstractAotProcessor.java:81)
        at org.springframework.boot.SpringApplicationAotProcessor.main(SpringApplicationAotProcessor.java:80)```

khauser avatar Jan 28 '25 08:01 khauser

Here is a small reproducer: reproducer.zip

khauser avatar Jan 28 '25 09:01 khauser

is there any update on this or a work around? I am getting the same error as well when trying to get our app building with native image

Exception in thread "main" java.lang.IllegalStateException: Error processing bean with name 'jmsPoolConnectionFactory': instance supplier is not supported

vprakashrao avatar Jun 12 '25 21:06 vprakashrao

https://github.com/Azure/azure-sdk-for-java/blob/9e720c428082dac05858592a52bb607c0cdbcf83/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsConnectionFactoryConfiguration.java#L107-L116

Probably related to the Known GraalVM Native Image limitations: Using beans defined as lambdas or instance suppliers with AOT/native is not yet supported, @saragluna should we fix it or wait for their support?

Netyyyy avatar Oct 17 '25 08:10 Netyyyy

We will close this issue as it has been open for a while. If you have any further questions or need assistance, please feel free to reopen it. Thank you!

Netyyyy avatar Oct 24 '25 02:10 Netyyyy