AWS SES服务:使用Java发送邮件

3
我使用 AWS SES 发送邮件示例时遇到以下错误:
"Exception in thread "main" java.lang.NoSuchMethodError: com.amazonaws.client.AwsSyncClientParams.getAdvancedConfig()Lcom/amazonaws/client/builder/AdvancedConfig;
    at com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClient.<init>(AmazonSimpleEmailServiceClient.java:277)
    at com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClient.<init>(AmazonSimpleEmailServiceClient.java:261)
    at com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClientBuilder.build(AmazonSimpleEmailServiceClientBuilder.java:61)
    at com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClientBuilder.build(AmazonSimpleEmailServiceClientBuilder.java:27)
    at com.amazonaws.client.builder.AwsSyncClientBuilder.build(AwsSyncClientBuilder.java:46)
    at saurabh.aws.learning.awsLearning.SendMailService.main(SendMailService.java:50)
"

请在此处包含完整的代码,仅提供堆栈跟踪是不够的。 - varnit
3个回答

6

问题:

我也遇到了同样的问题。原因是我在使用aws-java-sdk-core和aws-java-sdk-s3库时使用了不同的构件版本。

解决方案(Maven):

如果您正在使用Maven,亚马逊建议使用BOM dependencyManagement。这样您就可以确保您指定的模块使用相同的SDK版本,并且它们彼此兼容。

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-bom</artifactId>
      <version>1.11.522</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

由于您已在BOM中声明了SDK版本,因此不需要为每个组件指定版本号。像这样:

<dependencies>
  <dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-s3</artifactId>
  </dependency>
  <dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-sqs</artifactId>
  </dependency>
</dependencies>

来源: https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-project-maven.html#configuring-maven-individual-components

本文介绍如何配置Maven来使用Amazon Web Services(AWS)的Java SDK。扩展阅读可了解更多有关个别组件的信息,包括构建应用程序所需的依赖项和插件。

1
我自己也遇到过这个错误。最有可能的原因是像aws-java-sdk-ses和aws-java-sdk-core这样的工件版本不同。如果您正在使用maven,请尝试在pom.xml中同时使用上述两个相同的版本。如果这不起作用,您可以分享您的pom.xml吗?

1
谢谢您的回复。是的,问题现在已经解决了。 - Saurabh Gupta
如果这就是问题所在,请接受答案以帮助其他人。 - lost in binary

1

我也遇到了同样的问题:

在主线程中发生异常:java.lang.NoSuchMethodError: com.amazonaws.client.AwsSyncClientParams.getAdvancedConfig()Lcom/amazonaws/client/builder/AdvancedConfig;

我尝试从Java中为我的DynamoDB配置自动扩展,但遇到了这个问题。

解决方法:

我们需要确保AWS SDK版本与特定服务版本匹配。 当我遇到异常时,我使用了以下依赖项:

compile group: 'com.amazonaws', name: 'aws-java-sdk-applicationautoscaling', version: '1.11.500'
compile group: 'com.amazonaws', name: 'aws-java-sdk-core', version: '1.11.123'

更改为相同版本后,问题得到解决。
compile group: 'com.amazonaws', name: 'aws-java-sdk-applicationautoscaling', version: '1.11.500'
compile group: 'com.amazonaws', name: 'aws-java-sdk-core', version: '1.11.500'

1
在我的情况下,我已经从Java 8升级到Java 11,之前我没有指定aws-java-sdk-core作为依赖项,添加正确版本的依赖项帮助了我。 - ArcX

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接