最新版本和旧版本冲突的两个Maven依赖关系
我在这里使用spring-data-dynamoDB项目,根据它的pom.xml,他们使用了aws-java-sdk的 1.6.9.1版本,但我需要使用最新版本的aws-java-sdk来实现我的项目它的function也实现了amazon s3。 如果我包含它的依赖,
com.amazonaws aws-java-sdk 1.7.9
我得到如下例外,
12:51:25.298 [main] DEBUG osbfsDefaultListableBeanFactory - Retrieved dependent beans for bean '(inner bean)': [_relProvider] 12:51:25.307 [main] ERROR oswcContextLoader - Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.hateoas.config.HypermediaSupportBeanDefinitionRegistrar$Jackson2ModuleRegisteringBeanPostProcessor#0': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '_halObjectMapper': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.fasterxml.jackson.databind.ObjectMapper]: Constructor threw exception; nested exception is java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()Z at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:547) ~[spring-beans-4.0.2.RELEASE.jar:4.0.2.RELEASE] ....... ....... Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '_halObjectMapper': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.fasterxml.jackson.databind.ObjectMapper]: Constructor threw exception; nested exception is java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()Z at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1076) ~[spring-beans-4.0.2.RELEASE.jar:4.0.2.RELEASE] ....... .......
我已尝试排除如下,也是相同的结果,
org.socialsignin spring-data-dynamodb 1.0.0-SNAPSHOT com.amazonaws aws-java-sdk
现在可以在我的项目中使用最新版本的aws-java-sdk吗? 或者必须更新spring-data-dynamoDB pom.xml,如果是这样,我只能使用它或者什么? 感谢Michaellavelle这个巨大的项目。 它有助于我完成DynamoDB部分。
谢谢你@ user944849。 问题是在aws-java-sdk中使用的jackson libs是spring-data-rest-webmvc中的较低版本并与之冲突,所以通过从aws-java-sdk构建正确排除jackson libs。 我得到的解决方案是,
com.amazonaws aws-java-sdk 1.7.9 jackson-core com.fasterxml.jackson.core jackson-databind com.fasterxml.jackson.core jackson-annotations com.fasterxml.jackson.core
由于声誉,我无法提前回复。 对于像我一样坚持的人来说,这可能会有用。 谢谢。
出于某种原因,从aws-java中排除jackson并不适合我。
java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()Z
看看这个问题,看起来像jackson不可用,或者我们在项目中有错误的版本。 这种方法似乎已经在2.3.0中添加,这是jackson的最新版本。 我添加了对最新版jackson的依赖,现在我的代码很高兴。
com.amazonaws aws-java-sdk-s3 1.9.6 com.fasterxml.jackson.core jackson-core 2.3.0 com.fasterxml.jackson.core jackson-databind 2.3.0 com.fasterxml.jackson.core jackson-annotations 2.3.0
我不确定是否需要注释和数据绑定。 此外,我正在开展一个庞大的项目,因此不同forms的jackson可能会从各种其他依赖项,jersey,google-http-client-jackson2进来。 因此,查看maven依赖图以查看jackson的来源也是明智之举。
NoClassDefFound for com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering
的错误是NoClassDefFound for com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering
。 我在GrepCode中搜索了该类,并发现它位于com.fasterxml.jackson.core:jackson-core
库中。 我的猜测是你尝试过的两个版本的aws-java-sdk
库都指定了不同的jackson-core库版本作为传递依赖。 您的应用程序可能也明确依赖于jackson-core
– 比以后的aws-java-sdk
所需的版本更旧。 该项目需要使用包含requiresPropertyOrdering方法的jackson-core版本。 您应该能够通过运行mvn dependency:tree
(或IDE中的等效项)来查看所有传递依赖项。
一个解决方法是将jackson-core
库添加到项目的POM(或父POM)中的
块,以确保使用正确的版本。
- Amazon Web Services(AWS)S3 Java创建子目录(对象)
- 为枚举构建一个通用的DynamoDBMarshalling
- Amazon Product Advertising API使用Java签署了请求
- 从SQS检索多条消息
- Apache Kafka:无法更新Metadata / java.nio.channels.ClosedChannelException
- S3 Java客户端因“Content-Length delimited message body的过早结束”或“java.net.SocketException Socket closed”而失败了很多
- AWS S3上载处于WAITING状态
- 无法与远程计算机建立RMI连接
- Amazon SNS使用Java推送主题