2017-01-16 4 views
0

Ich möchte die Nachrichten in der SQS-Warteschlange abrufen. Ich benutze den Maven zum ersten Mal. Hier sind die Schritte, die ich bisher gemacht habe.Wie verwende ich AWS SDK für Java mit Maven?

1. Erstellt Maven Projekt diesem Befehl:

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

Der obige Befehl erstellt ein aws-versuchen Verzeichnis mit src Ordner und pom.xml.

2. Added AWS-SDK-Abhängigkeit in pom.xml:

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

3. Hinzugefügt wurde die SQSTry.java Datei unter src> main> Java> com> mycompany> app> 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. Jetzt Befehl

verpacken

Der obige Befehl wurde für die Datei pom.xml im Stammverzeichnis des Verzeichnisses aws-try ausgeführt.

Dies gibt den folgenden Fehler:

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 

Ich habe die Abhängigkeit korrekt hinzugefügt. Wenn Sie die obige SQSTry.java-Datei bemerkt haben, war die AWSCredentials auch ein Paket von Amazon, aber ID gibt keinen Fehler.

Was fehlt mir?

+0

überprüfen Sie dies, http://StackOverflow.com/Questions/12811392/java-ClassnotFounddexception-with-maven-dependency –

+0

@ShivaKumarSS Auch nach dem Hinzufügen des Bereichs mit Compile zu Abhängigkeit, es hat nicht funktioniert. Ich kann einfach nicht verstehen, warum es aws sdk nicht korrekt importiert. –

+0

"mvn package" wird das Hauptprogramm nicht ausführen. Ich sehe, dass die Ausnahme beim Ausführen des Hauptprogramms ausgelöst wird. Was ist der genaue Befehl, den Sie zu verwenden versuchen und was ist Ihre Anforderung? –

Antwort

0

Können Sie versuchen mvn clean install. Überprüfen Sie auch, ob Sie die richtige Version für das SDK verwenden

Versuchen Zugabe

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

Ja, ich habe den clean install Befehl auch ausprobiert. Hat nicht geklappt. Und ich habe die Version auch gekreuzt.Die neueste Version –

+0

Das Ändern der ** aws-java-sdk ** in ** aws-java-sdk-core ** gibt bei der Ausführung der ** mvn clean install ** -Fehlermeldung einen Fehler. Aber die Rückkehr zu ** aws-java-sdk ** gibt keinen Fehler während der Ausführung von ** mvn clean install **, gibt aber bei der letzten Ausführung eine ClassNotFound-Ausnahme. –

+0

Können Sie überprüfen, ob in aws-java-sdk-core jar geladen wird dein Projekt oder nicht? Klasse, für die Sie die Ausnahme erhalten, ist Teil dieses Jar. –

0

Sie benötigen Maven-Schatten-Plugin zum pom.xml hinzufügen, die alle AWS sdk Gläser auf einem Standalone-Pakete JAR-Datei.

die folgende Hinzufügen arbeitete für mich:

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

fand ich diese Lösung aus here.

Verwandte Themen