如何解决 AWS CloudFormation 中的“java.lang.ClassNotFoundException:com.example.package.resource.HandlerWrapper”这一错误?
上次更新时间:2020 年 8 月 17 日
尝试在 AWS CloudFormation 中调用我的资源提供程序时,我收到“java.lang.ClassNotFoundException:com.example.package.resource.HandlerWrapper”这一错误。如何解决此错误?
简短描述
当您正在开发或测试资源提供程序 schema并调用cfn test或sam local invoke时,您会收到此错误,但项目中的/target/目录未包含有效的.jar文件。
默认情况下,.jar文件的名称的格式为organization-service-resource-handler-1.0-SNAPSHOT.jar,且是在项目根目录的pom.xml文件中进行配置。例如:
<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>
如果您遇到与使用资源提供程序有关的其他错误的问题,请参阅以下文章,以获取更多排查故障步骤:
解决方法
1. 要构建您的项目,请运行cfn generate,然后运行mvn package。例如:
$ 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] ------------------------------------------------------------------------
注意:如果构建和测试成功,mvn会在/target/目录中创建必要的.jar文件。
2. 如果您的单元测试尚未完成,而您想跳过测试,请运行mvn -Dmaven.test.skip=true package ,而非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] ------------------------------------------------------------------------
提示:您可以通过从项目的根目录导航到目录/target/surefire-reports来排除测试故障。