Tout
Je rencontre 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.<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)
dans mon 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>
Quelqu'un sait ce que j'ai mal fait?
merci
J'ai eu un problème similaire avec mon application de grails. Dans mon cas, l'exception ClassNotFoundException était émise à partir d'un script de déploiement. Pour moi, la raison pour laquelle SchemePortResolver n'était pas résolue implicitement était parce que cela n'était pas nécessaire au moment de la compilation, mais au moment de 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:
<dependency>
<groupId>org.Apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
<scope>runtime</scope>
</dependency>
Si vous ajoutez,
<dependency>
<groupId>org.Apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
, 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
tel qu'affiché dans Hiérarchie des dépendances tab d'Eclipse), le POM inclut explicitement la v4.1 de httpclient
, ce qui oblige Maven à omettre la v4.5.5 requise par aws-Java-sdk-core ( et ainsi, provoque l'erreur similaire Java.lang.NoClassDefFoundError: org/Apache/http/conn/DnsResolver sur com.amazonaws.http.Apache.client.impl.ApacheHttpClientFactory ... ):