cloudformation-cli-java-plugin icon indicating copy to clipboard operation
cloudformation-cli-java-plugin copied to clipboard

Error testing Resource Provider - java.lang.ClassNotFoundException: software.amazon.cloudformation.<projectName>.HandlerWrapper

Open shantgup opened this issue 5 years ago • 1 comments

I'm following this tutorial here [1], and creating a Resource Provider using the cfn CLI.

When I run "sam local invoke TestEntrypoint --event sam-tests/create.json" I get error below.

Invoking software.amazon.cloudformation.command.HandlerWrapper::testEntrypoint (java8)

Fetching lambci/lambda:java8 Docker container image......
Mounting /Users/shantgup/Documents/CloudFormation-Command-Project/target/aws-cloudformation-command-handler-1.0-SNAPSHOT.jar as /var/task:ro,delegated inside runtime container
START RequestId: 4d2dbf5e-b8c6-159e-9687-8b59ce7d918a Version: $LATEST
java.lang.ClassNotFoundException: software.amazon.cloudformation.command.HandlerWrapper
	at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:348)

Exception in thread "main" java.lang.Error: java.lang.RuntimeException: java.lang.RuntimeException: Unexpected status code from invocation/response: 299
	at lambdainternal.AWSLambda.<clinit>(AWSLambda.java:65)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:348)
	at lambdainternal.LambdaRTEntry.main(LambdaRTEntry.java:119)
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: Unexpected status code from invocation/response: 299
	at lambdainternal.LambdaRuntime.reportDone(LambdaRuntime.java:227)
	at lambdainternal.AWSLambda.startRuntime(AWSLambda.java:366)
	at lambdainternal.AWSLambda.<clinit>(AWSLambda.java:63)
	... 3 more
Caused by: java.lang.RuntimeException: Unexpected status code from invocation/response: 299
	at lambdainternal.LambdaRuntime.reportDone(LambdaRuntime.java:224)
	... 5 more

Now the file does not exist in my "src/main/java/software/amazon/cloudformation/<project_name>/"

But I see 3 of them in /target/classes/software/amazon/cloudformation/<project_name>. There's HandlerWrapper.class, HandlerWrapper$1.class, HandlerWrapper$2.class, HandlerWrapper$3.class.

Also, my build steps have been as follows:

1. cfn generate
2. Build project in IntelliJ Idea
3. sam local invoke TestEntrypoint --event sam-tests/create.json

Any help to troubleshoot / fix this would be greatly appreciated.

[1] - https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/resource-type-walkthrough.html

shantgup avatar Mar 18 '20 02:03 shantgup

For me, turns out that I was not running mvn package before executing sam invoke

Found this solution in the AWS Docs

Just in case anyone runs into this issue in the future

larse514 avatar Oct 16 '21 22:10 larse514