所有
当我将aws库更新到最新的1.11.3时,我在项目中遇到了这个错误。
引起:
java.lang.NoClassDefFoundError: org/apache/http/conn/SchemePortResolver
at com.amazonaws.http.apache.client.impl.ApacheHttpClientFactory.<init>(ApacheHttpClientFactory.java:40)
at com.amazonaws.http.AmazonHttpClient.<clinit>(AmazonHttpClient.java:97)
at com.amazonaws.AmazonWebServiceClient.<init>(AmazonWebServiceClient.java:145)
at com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:393)
at com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:373)
at com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:355)
at com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:339)
在我的pom.xml中
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-core</artifactId>
<version>1.11.3</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.11.3</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-kms</artifactId>
<version>1.11.3</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-ext-jdk15on</artifactId>
<version>1.54</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-encryption-sdk-java</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
任何人都知道我做错了什么?
感谢
答案 0 :(得分:13)
我的grails应用程序遇到了类似的问题。在我的情况下,从部署脚本抛出ClassNotFoundException。对我来说,SchemePortResolver没有被隐式解析的原因是因为它在编译时并不需要,所以在运行时需要它。这是我添加到BuildConfig.groovy中修复它的内容:
runtime 'org.apache.httpcomponents:httpclient:4.5.2' //Required by BeanstalkDeploy.groovy at runtime
由于OP的问题是针对Maven的,所以这里包括:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
<scope>runtime</scope>
</dependency>
答案 1 :(得分:1)
如果你添加,
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
,它应该可以正常工作,因为它包含缺少的类定义。
答案 2 :(得分:0)
一个常见的原因是Maven依赖冲突。在下面的示例中(在Eclipse的 Dependency Hierarchy 标签中查看的pom.xml
),POM明确包含了httpclient
的v4.1,这迫使Maven省略了v4.5.5, aws-java-sdk-core要求(并因此导致类似的错误 java.lang.NoClassDefFoundError:com.amazonaws.http.apache.client.impl.ApacheHttpClientFactory上的org / apache / http / conn / DnsResolver。 ):
答案 3 :(得分:0)
在我的情况下,我在Eclipse工作区中删除了.meta文件,然后再次导入该项目,之后它就像一个超级按钮一样工作。 无法确切知道问题出在哪里。 删除.meta之前,我先添加所有文件 aws-java-sdk-1.11.606 \ third-party \ lib