2017-01-24 6 views
0

В настоящее время я пытаюсь использовать AWS SDK (в частности, s3 SDK) в моем проекте, но получаю за исключениемAWS SDK NoClassDefFoundError

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

Я импортировал SDK в свой проект с использованием Maven, как показано в Документация SDK here. Код, который я бегу, что вызывает это происходит в

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

Я подозревал, что этот вопрос может быть происходит из-за конфликта в версии Джексона между версией, требуемой AWS SDK и версии я импортирующей себя за используйте else, где в проекте, хотя изменение этого, похоже, не разрешило проблему. Я включу файл POM.xml ниже.

Заранее спасибо.

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

Выход: 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 Выход слишком длинный для комментария, который я предоставил ссылку – user3075268

+0

Файл txt можно найти здесь [https://www.dropbox.com/s /g9akoy35a04mzet/mevenoutput.txt?dl=0) – user3075268

+0

Прошу прощения, это тот, который я искал: 'mvn dependency: tree -Dverbose -Dincludes = com.amazonaws' –

ответ

0

Я думаю, я нашел решение/обходной путь к этому вопросу. Благодаря предложениям от @DaveMaple я попытался создать приложение через командную строку и развернуть .war вручную, который, похоже, сработал.

Согласно this question IntelliJ IDEA использует свой собственный процесс сборки, а не Mavens. Это заставляет меня думать, что проблема связана с процессом сборки IntelliJ и не связана с AWS SDK или Maven. Чтобы обойти эту проблему, я настроил IntelliJ не использовать собственный процесс сборки, а вместо этого использовать Maven, а затем развернуть полученный .war. Объяснение о том, как это сделать, можно найти: here.

Смежные вопросы