After upgrading to java 22 & spring boot 3.2.6, I get the following stack trace at runtime. Adding an old version of commons collection seems to solve the issue.

Missing deps:

    <dependency>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
        <version>3.2.2</version>
      </dependency>

Stacktrace:

api-backend-1  | Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jmsHealthContributor' defined in class path resource [org/springframework/boot/actuate/autoconfigure/jms/JmsHealthContributorAutoConfiguration.class]: Unsatisfied dependency expressed through method 'jmsHealthContributor' parameter 0: Error creating bean with name 'jmsConnectionFactory' defined in class path resource [org/springframework/boot/autoconfigure/jms/artemis/ArtemisConnectionFactoryConfiguration$SimpleConnectionFactoryConfiguration$CachingConnectionFactoryConfiguration.class]: Failed to instantiate [org.springframework.jms.connection.CachingConnectionFactory]: Factory method 'cachingJmsConnectionFactory' threw exception with message: Unable to create ActiveMQConnectionFactory
api-backend-1  |    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:795)
api-backend-1  |    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:542)
api-backend-1  |    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1337)
api-backend-1  |    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1167)
api-backend-1  |    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562)
api-backend-1  |    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522)
api-backend-1  |    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337)
api-backend-1  |    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
api-backend-1  |    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335)
api-backend-1  |    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
api-backend-1  |    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
api-backend-1  |    at org.springframework.beans.factory.support.DefaultListableBeanFactory.addCandidateEntry(DefaultListableBeanFactory.java:1689)
api-backend-1  |    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1653)
api-backend-1  |    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveMultipleBeanMap(DefaultListableBeanFactory.java:1575)
api-backend-1  |    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveMultipleBeans(DefaultListableBeanFactory.java:1514)
api-backend-1  |    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1392)
api-backend-1  |    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353)
api-backend-1  |    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:904)
api-backend-1  |    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:782)
api-backend-1  |    ... 90 common frames omitted
api-backend-1  | Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jmsConnectionFactory' defined in class path resource [org/springframework/boot/autoconfigure/jms/artemis/ArtemisConnectionFactoryConfiguration$SimpleConnectionFactoryConfiguration$CachingConnectionFactoryConfiguration.class]: Failed to instantiate [org.springframework.jms.connection.CachingConnectionFactory]: Factory method 'cachingJmsConnectionFactory' threw exception with message: Unable to create ActiveMQConnectionFactory
api-backend-1  |    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:648)
api-backend-1  |    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:636)
api-backend-1  |    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1337)
api-backend-1  |    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1167)
api-backend-1  |    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562)
api-backend-1  |    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522)
api-backend-1  |    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337)
api-backend-1  |    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
api-backend-1  |    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335)
api-backend-1  |    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
api-backend-1  |    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
api-backend-1  |    at org.springframework.beans.factory.support.DefaultListableBeanFactory.addCandidateEntry(DefaultListableBeanFactory.java:1689)
api-backend-1  |    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1653)
api-backend-1  |    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveMultipleBeanMap(DefaultListableBeanFactory.java:1575)
api-backend-1  |    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveMultipleBeans(DefaultListableBeanFactory.java:1514)
api-backend-1  |    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1392)
api-backend-1  |    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353)
api-backend-1  |    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:904)
api-backend-1  |    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:782)
api-backend-1  |    ... 108 common frames omitted
api-backend-1  | Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.jms.connection.CachingConnectionFactory]: Factory method 'cachingJmsConnectionFactory' threw exception with message: Unable to create ActiveMQConnectionFactory
api-backend-1  |    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:177)
api-backend-1  |    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:644)
api-backend-1  |    ... 126 common frames omitted
api-backend-1  | Caused by: java.lang.IllegalStateException: Unable to create ActiveMQConnectionFactory
api-backend-1  |    at org.springframework.boot.autoconfigure.jms.artemis.ArtemisConnectionFactoryFactory.createConnectionFactory(ArtemisConnectionFactoryFactory.java:65)
api-backend-1  |    at org.springframework.boot.autoconfigure.jms.artemis.ArtemisConnectionFactoryConfiguration$SimpleConnectionFactoryConfiguration.createJmsConnectionFactory(ArtemisConnectionFactoryConfiguration.java:59)
api-backend-1  |    at org.springframework.boot.autoconfigure.jms.artemis.ArtemisConnectionFactoryConfiguration$SimpleConnectionFactoryConfiguration$CachingConnectionFactoryConfiguration.cachingJmsConnectionFactory(ArtemisConnectionFactoryConfiguration.java:73)
api-backend-1  |    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)
api-backend-1  |    at java.base/java.lang.reflect.Method.invoke(Unknown Source)
api-backend-1  |    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:140)
api-backend-1  |    ... 127 common frames omitted
api-backend-1  | Caused by: java.lang.reflect.InvocationTargetException: null
api-backend-1  |    at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(Unknown Source)
api-backend-1  |    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Unknown Source)
api-backend-1  |    at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
api-backend-1  |    at org.springframework.boot.autoconfigure.jms.artemis.ArtemisConnectionFactoryFactory.newNativeConnectionFactory(ArtemisConnectionFactoryFactory.java:142)
api-backend-1  |    at org.springframework.boot.autoconfigure.jms.artemis.ArtemisConnectionFactoryFactory.createNativeConnectionFactory(ArtemisConnectionFactoryFactory.java:129)
api-backend-1  |    at org.springframework.boot.autoconfigure.jms.artemis.ArtemisConnectionFactoryFactory.doCreateConnectionFactory(ArtemisConnectionFactoryFactory.java:90)
api-backend-1  |    at org.springframework.boot.autoconfigure.jms.artemis.ArtemisConnectionFactoryFactory.createConnectionFactory(ArtemisConnectionFactoryFactory.java:62)
api-backend-1  |    ... 132 common frames omitted
api-backend-1  | Caused by: java.lang.IllegalStateException: java.lang.NoClassDefFoundError: org.apache.commons.collections.FastHashMap
api-backend-1  |    at org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.<init>(ActiveMQConnectionFactory.java:218)
api-backend-1  |    ... 139 common frames omitted
api-backend-1  | Caused by: java.lang.NoClassDefFoundError: org.apache.commons.collections.FastHashMap
api-backend-1  |    at org.apache.commons.beanutils.PropertyUtilsBean.getPropertyDescriptor(PropertyUtilsBean.java:964)
api-backend-1  |    at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:935)
api-backend-1  |    at org.apache.activemq.artemis.utils.uri.BeanSupport.setData(BeanSupport.java:89)
api-backend-1  |    at org.apache.activemq.artemis.uri.schema.serverLocator.AbstractServerLocatorSchema.newConnectionOptions(AbstractServerLocatorSchema.java:29)
api-backend-1  |    at org.apache.activemq.artemis.uri.schema.serverLocator.TCPServerLocatorSchema.internalNewObject(TCPServerLocatorSchema.java:47)
api-backend-1  |    at org.apache.activemq.artemis.uri.schema.serverLocator.TCPServerLocatorSchema.internalNewObject(TCPServerLocatorSchema.java:33)
api-backend-1  |    at org.apache.activemq.artemis.utils.uri.URISchema.newObject(URISchema.java:84)
api-backend-1  |    at org.apache.activemq.artemis.utils.uri.URISchema.newObject(URISchema.java:28)
api-backend-1  |    at org.apache.activemq.artemis.utils.uri.URIFactory.newObject(URIFactory.java:59)
api-backend-1  |    at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.newLocator(ServerLocatorImpl.java:354)
api-backend-1  |    at org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.setBrokerURL(ActiveMQConnectionFactory.java:236)
api-backend-1  |    at org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.<init>(ActiveMQConnectionFactory.java:216)
api-backend-1  |    ... 139 common frames omitted
api-backend-1  | Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.FastHashMap
api-backend-1  |    at java.base/java.net.URLClassLoader.findClass(Unknown Source)
api-backend-1  |    at java.base/java.lang.ClassLoader.loadClassHelper(Unknown Source)
api-backend-1  |    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
api-backend-1  |    at org.springframework.boot.loader.net.protocol.jar.JarUrlClassLoader.loadClass(JarUrlClassLoader.java:103)
api-backend-1  |    at org.springframework.boot.loader.launch.LaunchedClassLoader.loadClass(LaunchedClassLoader.java:91)
api-backend-1  |    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
api-backend-1  |    ... 151 common frames omitted

Comment From: wilkinsona

Spring Boot doesn't manage the version of Commons Collections as it does not depend upon it directly. It is, however, a transitive dependency of the Artermis starter. Another dependency in your application must have either influenced the version of commons-collections:commons-collections that's on the classpath, changing it to a version that's incompatible, or excluded it entirely.

It's worth noting here that Maven and Gradle behave different in this area. When a dependency graph contains multiple versions of the same dependency, Gradle will resolve the conflict by selecting the highest version. Maven will resolve the conflict by selecting the version that's nearest the root of the graph.

You should use your own dependency management, or dependency declaration as you've suggested above, to correct the problem.