我遇到了aws sdk和joda-time的常见问题。即使互联网上存在许多这些问题,我仍然无法解决这个问题......
Exception in thread "main" java.lang.NoSuchMethodError: org.joda.time.format.DateTimeFormatter.withZoneUTC()Lorg/joda/time/format/DateTimeFormatter;
at com.amazonaws.auth.internal.AWS4SignerUtils.<clinit>(AWS4SignerUtils.java:26)
at com.amazonaws.auth.internal.AWS4SignerRequestParams.<init>(AWS4SignerRequestParams.java:85)
at com.amazonaws.auth.AWS4Signer.sign(AWS4Signer.java:168)
at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:814)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:607)
at com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:376)
at com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:338)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:287)
at com.amazonaws.services.ec2.AmazonEC2Client.invoke(AmazonEC2Client.java:11132)
at com.amazonaws.services.ec2.AmazonEC2Client.runInstances(AmazonEC2Client.java:10657)
at cloudSteuerung.AmazonWebServices.create(AmazonWebServices.java:33)
at de.bla.ccu.Test.main(Test.java:16)
检查maven的依赖关系树我注意到了几个joda依赖关系。 AWS似乎需要2.8.1版本,因此我在pom文件中明确添加了它,但仍然出现错误。我尝试了几个版本的joda但没有版本似乎正常工作。 谁能帮我?我只是想运行AWS sdk EC2示例......
答案 0 :(得分:2)
我在使用aws-java-sdk artifactId声明我们的AWS依赖项时遇到了这个问题。例如
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>x.y.z</version>
</dependency>
我们更改为导入aws-java-sdk-bom依赖项as recommended by Amazon,例如
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-bom</artifactId>
<version>x.y.z</version>
<type>pom</type>
<scope>import</scope>
</dependency>
然后单独声明我们的组件依赖关系,例如
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
</dependency>
这允许Maven确定aws-sdk的正确joda-time依赖关系并解决了问题。
答案 1 :(得分:1)
显然,这意味着类路径所引用的JAR的版本比您使用的版本(2.8.1)的版本低
我在JBOSS 6.2 EAP上使用AWS开发工具包,并且遇到相同的问题。我发现JBOSS在“模块”文件夹下有自己的JODA,它首先被加载,而忽略了我在lib文件夹中的JODA版本。我在MANIFEST.MF中删除了ORG.JODA条目,这意味着类加载器现在将从库中查找JODA jar。这解决了我的问题。
答案 2 :(得分:0)
如果您的项目具有Weblogic和AWS依赖关系,请确保首先使用JODA time JAR,最后使用Weblogic JAR,以免它从Weblogic JAR中获取joda时间。
答案 3 :(得分:0)
我尝试了以下操作:-
1)将我的Java版本更改为1.8 2)在其他任何依赖项声明之前将aws依赖项在pom中上移
此后有效。
答案 4 :(得分:0)
我遇到了同样的问题,我下载了最新版本的Joda-time jar,并将其手动添加到添加了Project-structure-module的joda jar中 在这里https://github.com/JodaOrg/joda-time/releases拿了罐子饼干,它起作用了