Como resolvo o erro “java.lang.ClassNotFoundException: com.example.package.resource.HandlerWrapper” no CloudFormation?

2 minuto de leitura
0

Quando tento invocar meu provedor de recursos no AWS CloudFormation, recebo o erro: “java.lang.ClassNotFoundException: com.example.package.resource.HandlerWrapper”

Breve descrição

Você recebe o erro “java.lang.ClassNotFoundException: com.example.package.resource.HandlerWrapper” ao desenvolver ou testar um arquivo de esquema do provedor de recursos. Você chama cfn test ou sam local invoke, mas o diretório /target/ de seu projeto não contém um arquivo .jar válido.

Para outros erros relacionados ao uso de um provedor de recursos, consulte estes artigos:

Solução

Por padrão, o nome do arquivo .jar está no formato organization-service-resource-handler-1.0-SNAPSHOT.jar e configurado no arquivo pom.xml no diretório raiz de seu projeto. Por exemplo:

<groupId>com.organization.service.resource</groupId>
<artifactId>organization-service-resource-handler</artifactId>
<name>organization-service-resource-handler</name>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

Para criar seu projeto, execute cfn generate. Em seguida, execute mvn package. Por exemplo:

$ cfn generate
Generated files for Organization::Service::Resource
$ mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] --< software.organization.service.resource:organization-service-resource-handler >--
[INFO] Building organization-service-resource-handler 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  21.690 s
[INFO] Finished at: 2020-07-14T16:02:47-05:00
[INFO] ------------------------------------------------------------------------

Observação: se a compilação e os testes forem bem-sucedidos, mvn criará o arquivo .jar necessário no diretório /target/.

Para ignorar os testes de unidades que não estiverem concluídos, execute mvn -Dmaven.test.skip=true package em vez de mvn package.

$ cfn generate
Generated files for Organization::Service::Resource
$ mvn package -Dmaven.test.skip=true package
[INFO] Scanning for projects...
[INFO]
[INFO] --< software.organization.service.resource:organization-service-resource-handler >--
[INFO] Building organization-service-resource-handler 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  21.690 s
[INFO] Finished at: 2020-07-14T16:02:47-05:00
[INFO] ------------------------------------------------------------------------

Dica: você pode solucionar problemas de testes navegando até o diretório /target/surefire-reports a partir do diretório raiz do seu projeto.


Informações relacionadas

CLI do AWS CloudFormation (do site do GitHub)

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos