Comment résoudre l'erreur « java.lang.ClassNotFoundException : com.example.package.resource.HandlerWrapper » dans AWS CloudFormation ?

Date de la dernière mise à jour : 17/08/2020

Je reçois l'erreur « java.lang.ClassNotFoundException: com.example.package.resource.HandlerWrapper » lorsque j'essaie d'appeler mon fournisseur de ressources dans AWS CloudFormation. Comment résoudre cette erreur ?

Brève description

Vous recevez cette erreur lorsque vous développez ou testez un schéma de fournisseur de ressources et que vous appelez les commandes cfn test ou sam local invoke, mais que le répertoire /target/ de votre projet ne contient pas de fichier .jar valide.

Par défaut, le nom du fichier .jar est au format organization-service-resource-handler-1.0-SNAPSHOT.jar et est configuré dans le fichier pom.xml du répertoire racine de votre projet. Par exemple :

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

Solution

1.    Pour construire votre projet, exécutez la commande cfn generate suivie de mvn package. Par exemple :

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

Remarque : Si la construction et les tests réussissent, mvn crée le fichier .jar nécessaire dans le répertoire /target/.

2.    Si vos tests d'unité ne sont pas terminés et que vous voulez les passer, exécutez la commande mvn -Dmaven.test.skip=true package au lieu 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] ------------------------------------------------------------------------

Conseil : vous pouvez résoudre les problèmes des tests en accédant au répertoire /target/surefire-reports à partir du répertoire racine de votre projet.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?