2

我正在编写一个从 s3 存储桶访问内容的 Spring Boot 应用程序,但是NoClassDefFoundError当我使用spring-cloud-starter-aws来自 Spring 初始化程序的启动器依赖项时,我得到了一个。

我在这里错过了其他一些依赖吗?

以下是我的依赖项。

<dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-aws</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-cassandra</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-integration</artifactId>
    </dependency>

    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
</dependencies>

我还将dependencyManagement块定义为spring-cloud-dependenciesEdgware.SR1用作我的spring-cloud-version.

我的应用程序在启动时失败并出现以下错误。

2018-01-24 12:20:25.642  INFO 1980 --- [           main] utoConfigurationReportLoggingInitializer : 

Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2018-01-24 12:20:25.666 ERROR 1980 --- [           main] o.s.boot.SpringApplication               : Application startup failed

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [com.art.productattribution.consumerintegration.ConsumerIntegrationApplication]; nested exception is java.lang.NoClassDefFoundError: com/amazonaws/AmazonClientException
    at org.springframework.context.annotation.ConfigurationClassParser.processImports(ConfigurationClassParser.java:616) ~[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE]

不知道我在这里错过了什么?如果您需要更多详细信息,请告诉我。我使用的 spring boot 版本是1.5.9.RELEASE

4

3 回答 3

1

正确的依赖是spring-cloud-aws-context. 在您的 pom 文件中添加以下内容(截至 2017 年 11 月 22 日的版本 1.2.2):

<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-aws-context -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-aws-context</artifactId>
    <version>1.2.2.RELEASE</version>
</dependency>

以下是 Spring Cloud AWS 模块:

Spring Cloud AWS Core是 Spring Cloud AWS 的核心模块,为安全和配置设置提供基础服务。开发者不会直接使用这个模块,而是通过其他模块。核心模块支持基于云的环境配置,提供对基于实例的 EC2 元数据和整个应用程序堆栈特定 CloudFormation 元数据的直接访问。

Spring Cloud AWS Context通过 Spring 资源加载器抽象提供对简单存储服务的访问。此外,开发人员可以使用简单电子邮件服务和 Spring 邮件抽象来发送电子邮件。此外,开发人员可以使用 Spring 缓存支持和 ElastiCache 缓存服务引入声明式缓存。

Spring Cloud AWS JDBC为关系数据库服务提供自动数据源查找和配置,可与 JDBC 或 Spring 的任何其他支持数据访问技术一起使用。

Spring Cloud AWS Messaging使开发人员能够使用简单队列服务接收和发送消息,以进行点对点通信。简单通知服务的集成支持发布-订阅消息传递。

参考:http ://cloud.spring.io/spring-cloud-aws/spring-cloud-aws.html#_using_amazon_web_services

于 2018-02-08T15:30:06.767 回答
0

您需要包含@alltej 提到的依赖项。如果您在本地运行,您还需要在 application.properties 文件中添加以下属性。

cloud.aws.stack.auto=false
于 2019-03-25T10:08:47.713 回答
0

似乎com.amazonaws.AmazonClientException在类路径中找不到。我认为您可以在 POM.xml 文件中添加以下依赖项来解决此问题。

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-aws-core</artifactId>
    <version>1.2.2.RELEASE</version>
</dependency>
于 2018-01-25T03:55:03.540 回答