2017-01-24 1 views
0

Je suis en train d'utiliser actuellement le SDK AWS (plus précisément le SDK s3) dans mon projet, mais continuer à obtenir l'exceptionAWS SDK NoClassDefFoundError

java.lang.NoClassDefFoundError:com/amazonaws/services/s3/AmazonS3ClientBuilder 

J'ai importé le SDK dans mon projet en utilisant maven comme indiqué dans le Documentation SDK here. Le code que je suis en cours d'exécution qui cause que cela se produise est

AmazonS3 amazonS3 = AmazonS3ClientBuilder.standard().withRegion(Regions.EU_WEST_1).build(); 

Je me doutais bien la question aurait pu survenir en raison d'un conflit dans les versions Jackson entre la version requise par le SDK AWS et la version que je me importation pour recevoir utiliser ailleurs où dans le projet, bien que cela ne semble pas avoir résolu le problème. Je vais inclure mon fichier POM.xml ci-dessous.

Merci d'avance.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 

<modelVersion>4.0.0</modelVersion> 

<groupId>com.projectname.restservice</groupId> 
<artifactId>ProjectName</artifactId> 
<packaging>war</packaging> 
<version>1.0-SNAPSHOT</version> 
<name>ProjectName</name> 

<build> 
    <finalName>ProjectName</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.5.1</version> 
      <inherited>true</inherited> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.glassfish.jersey</groupId> 
      <artifactId>jersey-bom</artifactId> 
      <version>2.16</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
     <dependency> 
      <groupId>com.amazonaws</groupId> 
      <artifactId>aws-java-sdk-bom</artifactId> 
      <version>1.11.22</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

<dependencies> 
    <dependency> 
     <groupId>org.glassfish.jersey.containers</groupId> 
     <artifactId>jersey-container-servlet-core</artifactId> 
    </dependency> 

    <!--Removed due to possible conflict with AWS SDK?--> 
    <!--<dependency> 
     <groupId>org.glassfish.jersey.media</groupId> 
     <artifactId>jersey-media-json-jackson</artifactId> 
    </dependency>--> 

    <dependency> 
     <groupId>org.glassfish.jersey.media</groupId> 
     <artifactId>jersey-media-multipart</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.35</version> 
    </dependency> 

    <dependency> 
     <groupId>com.amazonaws</groupId> 
     <artifactId>aws-java-sdk-s3</artifactId> 
    </dependency> 

</dependencies> 

Sortie de: mvn dependency:tree -Dverbose -Dincludes=com.amazonaws

com.trailfinder.restservice:TrailFinderRestService:war:1.0-SNAPSHOT 
[INFO] \- com.amazonaws:aws-java-sdk-s3:jar:1.11.22:compile 
[INFO] +- com.amazonaws:aws-java-sdk-kms:jar:1.11.22:compile 
[INFO] | \- (com.amazonaws:aws-java-sdk-core:jar:1.11.22:compile - omitted for duplicate) 
[INFO] \- com.amazonaws:aws-java-sdk-core:jar:1.11.22:compile 
+0

@DaveMaple La sortie est trop longue pour un commentaire Je vais fournir un lien – user3075268

+0

Le fichier txt peut être trouvé [ici] (https://www.dropbox.com/s /g9akoy35a04mzet/mevenoutput.txt?dl=0) – user3075268

+0

Je suis désolé, c'est celui que je recherchais: 'mvn dépendance: tree -Dverbose -Dincludes = com.amazonaws' –

Répondre

0

Je pense, je l'ai trouvé une solution/solution à ce problème. Grâce aux suggestions de @DaveMaple, j'ai essayé de construire l'application via la ligne de commande et de déployer le .war manuellement, ce qui semble avoir fonctionné.

Selon this question IntelliJ IDEA utilise son propre processus de construction et non Mavens. Cela me porte à croire que le problème était avec le processus de construction IntelliJ et rien à voir avec AWS SDK ou Maven. Pour contourner ce problème, j'ai configuré IntelliJ pour ne pas utiliser son propre processus de construction, mais à la place pour utiliser Maven et ensuite déployer le .war résultant. Explication sur la façon de le faire peut être trouvé here.