2017-01-16 7 views
0

Я хочу получить сообщения в очереди SQS. Я использую maven в первый раз. Вот шаги, которые я сделал до сих пор.Как использовать AWS SDK для java с maven?

1. Создал Maven проект, используя следующую команду:

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=aws-try -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false 

Вышеуказанная команда создала AWS-попробуйте каталог с папкой Src и pom.xml.

2. Добавлена ​​AWS-SDK зависимостей в pom.xml:

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

3. Добавлен файл SQSTry.java при СРК> главная> Java> обыкн> MyCompany> Приложение> SQSTry.java

package com.mycompany.app; 

import java.util.List; 
import java.util.Map.Entry; 

import com.amazonaws.AmazonClientException; 
import com.amazonaws.AmazonServiceException; 
import com.amazonaws.auth.AWSCredentials; 
import com.amazonaws.auth.profile.ProfileCredentialsProvider; 
import com.amazonaws.regions.Region; 
import com.amazonaws.regions.Regions; 
import com.amazonaws.services.sqs.AmazonSQS; 
import com.amazonaws.services.sqs.AmazonSQSClient; 
import com.amazonaws.services.sqs.model.CreateQueueRequest; 
import com.amazonaws.services.sqs.model.DeleteMessageRequest; 
import com.amazonaws.services.sqs.model.DeleteQueueRequest; 
import com.amazonaws.services.sqs.model.Message; 
import com.amazonaws.services.sqs.model.ReceiveMessageRequest; 
import com.amazonaws.services.sqs.model.SendMessageRequest; 


public class SQSTry { 

public static void main (String args[]) { 


System.out.println("SQSTry"); 

     AWSCredentials credentials = null; 
     try { 
      credentials = new ProfileCredentialsProvider().getCredentials(); 
     } catch (Exception e) { 
      throw new AmazonClientException(
        "Cannot load the credentials from the credential profiles file. " + 
        "Please make sure that your credentials file is at the correct " + 
        "location (~/.aws/credentials), and is in valid format.", 
        e); 
     } 

     AmazonSQS sqs = new AmazonSQSClient(credentials); 
     Region apNortheast1 = Region.getRegion(Regions.AP_NORTHEAST_1); 
     sqs.setRegion(apNortheast1); 

     System.out.println("==========================================="); 
     System.out.println("Getting Started with Amazon SQS"); 
     System.out.println("===========================================\n"); 



} 
} 

4. Теперь пакет команду

mvn package 

Вышеупомянутая команда была выполнена против pom.xml в корне каталога aws-try.

Это дает следующее сообщение об ошибке:

Exception in thread "main" java.lang.NoClassDefFoundError: com/amazonaws/AmazonClientException 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2625) 
    at java.lang.Class.getMethod0(Class.java:2866) 
    at java.lang.Class.getMethod(Class.java:1676) 
    at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494) 
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486) 
Caused by: java.lang.ClassNotFoundException: com.amazonaws.AmazonClientException 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    ... 6 more 

я правильно добавляемые зависимость. Если вы заметили вышеупомянутый файл SQSTry.java, то AWSCredentials был также пакетом с amazon, но id не дает никакой ошибки.

Что мне не хватает?

+0

проверить это, http://stackoverflow.com/questions/12811392/java-classnotfoundexception-with-maven-dependency –

+0

@ShivaKumarSS Даже после добавления области с компиляцией в зависимость она не работала. Я просто не могу понять, почему он не импортирует aws sdk правильно. –

+0

«mvn package» не будет запускать основную программу. Я вижу, что исключение выбрасывается при запуске основной программы. какая именно команда вы пытаетесь использовать и каково ваше требование. –

ответ

0

Вы можете попробовать mvn clean install. Также проверьте, если вы используете правильную версию для SDK

Попробуйте добавить

<!-- https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-core --> 
<dependency> 
    <groupId>com.amazonaws</groupId> 
    <artifactId>aws-java-sdk-core</artifactId> 
    <version>1.11.78</version> 
</dependency> 
+0

Да, я также попытался выполнить команду чистой установки. Не получилось. И я тоже проверил версию.Последняя версия –

+0

Изменение ** aws-java-sdk ** на ** aws-java-sdk-core ** дает ошибку при выполнении команды ** mvn clean install **. Но переход на ** aws-java-sdk ** не дает ошибки при выполнении команды ** mvn clean install **, но дает исключение ClassNotFound при окончательном выполнении –

+0

Можете ли вы проверить, загружается ли aws-java-sdk-core jar в ваш проект или нет? класс, для которого вы получаете исключение, является частью этой банки. –

0

Вам нужно добавить Maven-тень-плагин к pom.xml, который упаковывает все SDk банки AWS для автономного jar файл.

Добавление следующие работал для меня:

<build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-shade-plugin</artifactId> 
     <version>2.3</version> 
     <configuration> 
      <createDependencyReducedPom>false</createDependencyReducedPom> 
     </configuration> 
     <executions> 
      <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>shade</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 

Я нашел это решение от here.