Spring Boot,AWS应用程序上的Jackson数据绑定依赖错误
Posted
技术标签:
【中文标题】Spring Boot,AWS应用程序上的Jackson数据绑定依赖错误【英文标题】:Jackson databind dependency error on Spring Boot, AWS application 【发布时间】:2017-12-05 13:17:15 【问题描述】:我从 start.spring.io 创建了一个带有 Web 依赖项的 Spring Boot 应用程序。然后我将 AWS SDK 依赖项添加为 -
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.157</version>
</dependency>
在构建应用程序时,我收到以下错误 -
2017-07-02 03:02:11.431 WARN 18412 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerAdapter' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter]: Factory method 'requestMappingHandlerAdapter' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageConverters' defined in class path resource [org/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.autoconfigure.http.HttpMessageConverters]: Factory method 'messageConverters' threw exception; nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/Module
在哪里
nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/Module
在错误日志中多次出现。
我检查了树和依赖层次结构等,但如果我从 AWS 依赖中排除 Jackson,仍然会发生相同的错误。 如何解决这个错误?
这里是 pom.xml -
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sample1</groupId>
<artifactId>Sample13</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Sample13</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.M2</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-bom</artifactId>
<version>1.11.106</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.157</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
【问题讨论】:
【参考方案1】:您将 Jackson 从 AWS Dependency 和 Spring Boot 中排除,也没有将其定义为依赖项。
为什么要排除 jackson 是必需的。
在不将 Jackson 从 Spring Boot 中排除的情况下,应用程序启动,
具体示例 - https://github.com/Flaw101/jackson-databind-error
【讨论】:
不,我不排除同时启动 AWS 和 Boot,而仅排除其中一个。我也单独添加了杰克逊。所以,我尝试了所有的可能性。 @DevS 我没有在任何地方看到单独的包含。 @DevS 在您的示例中,杰克逊在哪里定义为单独的依赖项。 我已经编辑了帖子并粘贴了原来的 pom。我正在尝试这些排除项、单独的包含项等(我碰巧发布了),但没有任何效果。 @DevS 一定是其他原因造成的。用你当前的 POM 更新了我的 gitrepo,应用程序仍然启动。我还要指出您的 BOM 导入目前是无用的,因为您正在使用包含每个 AWS SDK 片段的胖 jar,而不是提取您需要的由 BOM 支持的模块。【参考方案2】:我遇到了同样的问题,在删除以下依赖项后解决了我的问题。 移除依赖:
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.157</version>
</dependency>
它非常适合我。
【讨论】:
以上是关于Spring Boot,AWS应用程序上的Jackson数据绑定依赖错误的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot,AWS应用程序上的Jackson数据绑定依赖错误
AWS Beanstalk 上的 Spring Boot 抛出 404
AWS Elastic Beanstalk 上的 Spring Boot 并记录到文件
aws弹性beantalk上的HTTP到HTTPS不适用于Spring Boot