java.lang.NoClassDefFoundError: org / apache / http / conn / SchemePortResolver avec AmazonHttpClient

Tout

Je suis en train de rencontrer cette erreur dans mon projet lorsque j’ai mis à jour la bibliothèque aws vers la dernière version 1.11.3.

Causé par:

java.lang.NoClassDefFoundError: org/apache/http/conn/SchemePortResolver at com.amazonaws.http.apache.client.impl.ApacheHttpClientFactory.(ApacheHttpClientFactory.java:40) at com.amazonaws.http.AmazonHttpClient.(AmazonHttpClient.java:97) at com.amazonaws.AmazonWebServiceClient.(AmazonWebServiceClient.java:145) at com.amazonaws.services.s3.AmazonS3Client.(AmazonS3Client.java:393) at com.amazonaws.services.s3.AmazonS3Client.(AmazonS3Client.java:373) at com.amazonaws.services.s3.AmazonS3Client.(AmazonS3Client.java:355) at com.amazonaws.services.s3.AmazonS3Client.(AmazonS3Client.java:339) 

dans mon pom.xml

   com.amazonaws aws-java-sdk-core 1.11.3   com.amazonaws aws-java-sdk-s3 1.11.3   com.amazonaws aws-java-sdk-kms 1.11.3   org.bouncycastle bcprov-ext-jdk15on 1.54   com.amazonaws aws-encryption-sdk-java 0.0.1-SNAPSHOT  

Quelqu’un sait ce que j’ai mal fait?

Merci

J’ai eu un problème similaire avec mon application grails. Dans mon cas, la ClassNotFoundException était lancée à partir d’un script de déploiement. Pour moi, la raison pour laquelle SchemePortResolver n’était pas implicitement résolue était que cela n’était pas nécessaire au moment de la compilation, il était nécessaire à l’exécution. Voici ce que j’ai ajouté à mon BuildConfig.groovy pour résoudre ce problème:

 runtime 'org.apache.httpcomponents:httpclient:4.5.2' //Required by BeanstalkDeploy.groovy at runtime 

Puisque la question du PO concernait Maven, voici l’équivalent:

   org.apache.httpcomponents httpclient 4.5.2 runtime  

Si vous ajoutez

  org.apache.httpcomponents httpclient 4.5.2  

, cela devrait fonctionner correctement car il contient les définitions de classe manquantes.

Une cause commune serait un conflit de dépendance Maven. Dans l’exemple ci-dessous ( pom.xml affiché dans l’onglet Hiérarchie des dépendances d’Eclipse), le POM inclut explicitement la version httpclient de httpclient , ce qui oblige Maven à omettre la v4.5.5 requirejse par aws-java-sdk-core (et donc l’erreur similaire java.lang.NoClassDefFoundError: org / apache / http / conn / DnsResolver à com.amazonaws.http.apache.client.impl.ApacheHttpClientFactory … ):

Capture d'écran de la hiérarchie des dépendances Eclipse