簡體   English   中英

java.lang.NoClassDefFoundError:帶有AmazonHttpClient的org / apache / http / conn / SchemePortResolver

[英]java.lang.NoClassDefFoundError: org/apache/http/conn/SchemePortResolver with AmazonHttpClient

所有

我將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>

有人知道我做錯了嗎?

謝謝

我的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>

如果您添加,

<dependency>
  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpclient</artifactId>
  <version>4.5.2</version>
 </dependency>

,它應該可以正常工作,因為它包含缺少的類定義。

一個常見的原因是Maven依賴沖突。 在下面的示例中(在Eclipse的Dependency Hierarchy選項卡中顯示的pom.xml ),POM明確包含httpclient v4.1,這迫使Maven忽略了aws-java-sdk-core所需的v4.5.5(因此,導致類似的錯誤java.lang.NoClassDefFoundError:com.amazonaws.http.apache.client.impl.ApacheHttpClientFactory ...上的org / apache / http / conn / DnsResolver ):

Eclipse依賴關系層次結構的屏幕截圖

就我而言,我在Eclipse工作區中刪除了.meta文件,然后再次導入該項目,此后它就像一個超級按鈕一樣工作。 無法確切知道問題出在哪里。 在刪除.meta之前,我從aws-java-sdk-1.11.606 \\ third-party \\ lib添加所有文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM