Skip to content
This repository has been archived by the owner on Jan 19, 2022. It is now read-only.

spring-cloud-aws-context dependencies #304

Closed
pacey opened this issue Mar 14, 2018 · 2 comments
Closed

spring-cloud-aws-context dependencies #304

pacey opened this issue Mar 14, 2018 · 2 comments

Comments

@pacey
Copy link

pacey commented Mar 14, 2018

I'm using org.springframework.cloud:spring-cloud-aws-context:1.2.1.RELEASE and at runtime my application cannot find any of the cache related classes e.g.

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'java.util.List<org.springframework.cloud.aws.cache.CacheFactory>' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1493) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1104) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]

All the dependencies for Elasticache are also missing for me, even though the reference doc says all the necessary dependencies are dealt with.

Strangely, if I remove my explicit dependency on spring-cloud-aws-context then I get a different error

Exception in thread "restartedMain" java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: java.lang.NoClassDefFoundError: com/amazonaws/services/elasticache/AmazonElastiCache
	at java.lang.Class.getDeclaredMethods0(Native Method)
	at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
	at java.lang.Class.getDeclaredMethods(Class.java:1975)
	at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:613)
	at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:524)
	at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:510)
	at org.springframework.util.ReflectionUtils.getUniqueDeclaredMethods(ReflectionUtils.java:570)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryMethod(AbstractAutowireCapableBeanFactory.java:697)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:640)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:609)
	at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1484)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:425)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:395)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:515)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:508)
	at org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1188)
	at org.springframework.boot.SpringApplication.getExitCodeFromMappedException(SpringApplication.java:818)
	at org.springframework.boot.SpringApplication.getExitCodeFromException(SpringApplication.java:804)
	at org.springframework.boot.SpringApplication.handleExitCode(SpringApplication.java:790)
	at org.springframework.boot.SpringApplication.handleRunFailure(SpringApplication.java:744)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:314)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107)
	at ai.pupil.spectrum.organisationservice.Application.main(Application.java:12)
	... 5 more
Caused by: java.lang.ClassNotFoundException: com.amazonaws.services.elasticache.AmazonElastiCache
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 29 more

I then added the explicit dependency on com.amazonaws:aws-java-sdk-elasticache:1.11.125 and it threw the original error I had.

My spring-cloud dependencies are:

compile('org.springframework.cloud:spring-cloud-starter-aws:1.2.1.RELEASE')
compile('org.springframework.cloud:spring-cloud-aws-autoconfigure:1.2.1.RELEASE')
compile('org.springframework.cloud:spring-cloud-aws-messaging:1.2.1.RELEASE')
@pacey
Copy link
Author

pacey commented Mar 26, 2018

You can see from running gradle dependencies that the elasticache aws sdk is not provided by the module. It's not a massive issue as it can be declared manually, but the library provides all the others so I'd rather it be consistent.

There is no mention of com.amazonaws:aws-java-sdk-elasticache:1.11.125 below:

+--- org.springframework.cloud:spring-cloud-starter-aws:1.2.1.RELEASE
|    +--- org.springframework.cloud:spring-cloud-aws-context:1.2.1.RELEASE
|    |    +--- org.springframework.cloud:spring-cloud-aws-core:1.2.1.RELEASE
|    |    |    +--- org.springframework:spring-beans:4.3.8.RELEASE -> 5.0.4.RELEASE (*)
|    |    |    +--- org.springframework:spring-aop:4.3.8.RELEASE -> 5.0.4.RELEASE (*)
|    |    |    +--- com.amazonaws:aws-java-sdk-core:1.11.125
|    |    |    |    +--- commons-logging:commons-logging:1.1.3 -> 1.2
|    |    |    |    +--- org.apache.httpcomponents:httpclient:4.5.2 -> 4.5.5
|    |    |    |    |    +--- org.apache.httpcomponents:httpcore:4.4.9
|    |    |    |    |    +--- commons-logging:commons-logging:1.2
|    |    |    |    |    \--- commons-codec:commons-codec:1.10 -> 1.11
|    |    |    |    +--- software.amazon.ion:ion-java:1.0.2
|    |    |    |    +--- com.fasterxml.jackson.core:jackson-databind:2.6.6 -> 2.9.4 (*)
|    |    |    |    +--- com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:2.6.6 -> 2.9.4
|    |    |    |    |    \--- com.fasterxml.jackson.core:jackson-core:2.9.4
|    |    |    |    \--- joda-time:joda-time:2.8.1 -> 2.9.9
|    |    |    +--- com.amazonaws:aws-java-sdk-s3:1.11.125
|    |    |    |    +--- com.amazonaws:aws-java-sdk-kms:1.11.125
|    |    |    |    |    +--- com.amazonaws:aws-java-sdk-core:1.11.125 (*)
|    |    |    |    |    \--- com.amazonaws:jmespath-java:1.11.125
|    |    |    |    |         \--- com.fasterxml.jackson.core:jackson-databind:2.6.6 -> 2.9.4 (*)
|    |    |    |    +--- com.amazonaws:aws-java-sdk-core:1.11.125 (*)
|    |    |    |    \--- com.amazonaws:jmespath-java:1.11.125 (*)
|    |    |    +--- com.amazonaws:aws-java-sdk-ec2:1.11.125
|    |    |    |    +--- com.amazonaws:aws-java-sdk-core:1.11.125 (*)
|    |    |    |    \--- com.amazonaws:jmespath-java:1.11.125 (*)
|    |    |    +--- com.amazonaws:aws-java-sdk-cloudformation:1.11.125
|    |    |    |    +--- com.amazonaws:aws-java-sdk-core:1.11.125 (*)
|    |    |    |    \--- com.amazonaws:jmespath-java:1.11.125 (*)
|    |    |    \--- org.slf4j:slf4j-api:1.7.25
|    |    +--- org.springframework:spring-context:4.3.8.RELEASE -> 5.0.4.RELEASE (*)
|    |    \--- org.slf4j:slf4j-api:1.7.25
|    +--- org.springframework.cloud:spring-cloud-aws-autoconfigure:1.2.1.RELEASE
|    |    +--- org.springframework.cloud:spring-cloud-aws-context:1.2.1.RELEASE (*)
|    |    +--- org.springframework.boot:spring-boot-autoconfigure:1.5.3.RELEASE -> 2.0.0.RELEASE (*)
|    |    \--- org.slf4j:slf4j-api:1.7.25
|    \--- org.slf4j:slf4j-api:1.7.25

@spring-projects-issues spring-projects-issues added the status: waiting-for-triage An issue we've not yet triaged label Oct 1, 2018
@spencergibb spencergibb added help wanted type: dependency-upgrade A dependency upgrade and removed status: waiting-for-triage An issue we've not yet triaged labels Jan 29, 2019
@maciejwalkowiak maciejwalkowiak added status: waiting-for-triage An issue we've not yet triaged and removed help wanted labels May 31, 2020
@maciejwalkowiak
Copy link
Contributor

Issue is not present in current version.

@maciejwalkowiak maciejwalkowiak removed status: waiting-for-triage An issue we've not yet triaged type: dependency-upgrade A dependency upgrade labels May 31, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Development

No branches or pull requests

4 participants