NoClassDefFoundError: AmazonSNSClient en Java SDK

votos
0

Tengo el error de definición de clase no encontrado al intentar crear una instancia de código AWSSNSClient.This no se está ejecutando en AWS Lambda su sistema local. Aquí está mi código Java

   18->   AmazonSNSClient snsClient = new AmazonSNSClient(credentials);
        snsClient.setRegion(Region.getRegion(Regions.));
        ObjectMapper Obj = new ObjectMapper();
        PublishRequest publishRequest = new PublishRequest();
        publishRequest.setTargetArn();
        publishRequest.setMessage();
        PublishResult publishResponse = snsClient.publish(publishRequest);

mi pom.xml

<?xml version=1.0 encoding=UTF-8?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd>
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.4.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.cmds</groupId>
    <artifactId></artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name></name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.amazonaws</groupId>
                <artifactId>aws-java-sdk-bom</artifactId>
                <version>1.11.379</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-kubernetes-config</artifactId>
            <version>1.1.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-flow</artifactId>
            <version>1.0.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jms</artifactId>
            <version>5.2.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>amazon-sqs-java-messaging-lib</artifactId>
            <version>1.0.8</version>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-sns</artifactId>
            <version>1.11.721</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

        </plugins>

    </build>

</project>

He recibido el siguiente error cuando se ejecuta el código Java

java.lang.NoClassDefFoundError: com / amazonaws / servicios / SNS / AmazonSNSClient en com.cmds.booking.infrastructure.SNSService.publishMessage (SNSService.java:18)

Cualquier problema de dependencia? Donde he ido mal?

Publicado el 13/02/2020 a las 23:57
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

He examinado el fragmento de código Java a lo mejor de mi capacidad y hay dos cuestiones que he señalado:

(I) La línea de abajo es incompleta:

snsClient.setRegion(Region.getRegion(Regions.));

y debe ser cambiado a:

snsClient.setRegion(Region.getRegion(Regions.US_EAST_1));

(Ii) La siguiente declaración están en desuso:

new AmazonSNSClient(credentials) 

y

snsClient.setRegion(Region.getRegion(Regions.fromName(region)));

En su lugar, los clientes de servicios de AWS deben ser creados de la siguiente manera:

Si está utilizando un archivo de credenciales a continuación, puede utilizar lo siguiente:

BasicAWSCredentials basicAwsCredentials = new BasicAWSCredentials(AccessKey,SecretAccessKey);
AmazonSNS snsClient = AmazonSNSClient
                    .builder()
                    .withRegion(your_region)
                    .withCredentials(new AWSStaticCredentialsProvider(basicAwsCredentials))
                    .build();

Si va a useInstanceProfileCredentialProvider a continuación, puede utilizar lo siguiente:

AmazonSNS sns = AmazonSNSClientBuilder
                .standard()
                .withCredentials(new InstanceProfileCredentialsProvider(true))
                .build();

Más información se puede encontrar en AWS Java guía para desarrolladores

¡Espero que esto ayude!

Respondida el 14/02/2020 a las 15:24
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more