Reputation: 391
I am trying to compile to native a small lambda function written with graalvm java and quarkus, but I get this exception. I already tried with adding the flags--allow-incomplete-classpath and --initialize-at-run-time for 2 classes, but this didn't fix the compilation to native. Does anybody have an idea what can be tried to get around this error?
The command executed
./gradlew --stacktrace -b ./build.gradle build -Dquarkus.package.type=native -Dquarkus.native.native-image-xmx=3g -Dquarkus.native.additional-build-args='--allow-incomplete-classpath,--trace-object-instantiation=java.util.Random,--initialize-at-run-time="com.amazonaws.ClientConfiguration,org.apache.http.impl.auth.NTLMEngineImpl"'
build.gradle dependencies:
dependencies {
compileOnly 'org.projectlombok:lombok:1.18.20'
annotationProcessor 'org.projectlombok:lombok:1.18.20'
implementation enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}")
implementation 'io.quarkus:quarkus-amazon-lambda'
implementation 'io.quarkus:quarkus-amazon-sns'
implementation 'io.quarkus:quarkus-amazon-kms'
implementation 'javax.activation:activation:1.1.1'
implementation 'com.amazonaws:aws-java-sdk-kms:1.11.483'
testImplementation 'io.rest-assured:rest-assured'
testImplementation 'io.quarkus:quarkus-junit5-mockito'
testImplementation 'io.quarkus:quarkus-junit5'
}
The error:
* Exception is:
#10 65.67 org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':quarkusBuild'.
#10 65.67 at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:200)
#10 65.67 at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:263)
#10 65.67 at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:198)
...
...
#10 65.75 at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
#10 65.75 at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
#10 65.75 at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
#10 65.75 Caused by: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
#10 65.75 [error]: Build step io.quarkus.deployment.pkg.steps.NativeImageBuildStep#build threw an exception: java.lang.RuntimeException: Failed to build native image
#10 65.75 at io.quarkus.deployment.pkg.steps.NativeImageBuildStep.build(NativeImageBuildStep.java:236)
#10 65.75 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
#10 65.75 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
#10 65.75 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
#10 65.75 at java.base/java.lang.reflect.Method.invoke(Method.java:566)
#10 65.75 at io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:887)
#10 65.75 at io.quarkus.builder.BuildContext.run(BuildContext.java:277)
#10 65.75 at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
#10 65.75 at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
#10 65.75 at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
#10 65.75 at java.base/java.lang.Thread.run(Thread.java:829)
#10 65.75 at org.jboss.threads.JBossThread.run(JBossThread.java:501)
#10 65.75 Caused by: java.lang.RuntimeException: Image generation failed. Exit code: 1
#10 65.75 at io.quarkus.deployment.pkg.steps.NativeImageBuildStep.imageGenerationFailed(NativeImageBuildStep.java:372)
#10 65.75 at io.quarkus.deployment.pkg.steps.NativeImageBuildStep.build(NativeImageBuildStep.java:215)
#10 65.75 ... 11 more
#10 65.75
#10 65.75 at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:330)
#10 65.76 at io.quarkus.runner.bootstrap.AugmentActionImpl.createProductionApplication(AugmentActionImpl.java:175)
#10 65.76 at io.quarkus.gradle.tasks.QuarkusBuild.buildQuarkus(QuarkusBuild.java:136)
#10 65.76 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
#10 65.76 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
#10 65.76 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
#10 65.76 at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)
#10 65.76 at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58)
#10 65.76 at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
#10 65.76 at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
#10 65.76 at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.run(ExecuteActionsTaskExecuter.java:555)
#10 65.76 at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
...
...
#10 65.86 at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
#10 65.86 at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
#10 65.86 at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
#10 65.87 at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
#10 65.87 Caused by: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
#10 65.87 [error]: Build step io.quarkus.deployment.pkg.steps.NativeImageBuildStep#build threw an exception: java.lang.RuntimeException: Failed to build native image
#10 65.87 at io.quarkus.deployment.pkg.steps.NativeImageBuildStep.build(NativeImageBuildStep.java:236)
#10 65.87 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
#10 65.87 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
#10 65.87 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
#10 65.87 at java.base/java.lang.reflect.Method.invoke(Method.java:566)
#10 65.87 at io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:887)
#10 65.87 at io.quarkus.builder.BuildContext.run(BuildContext.java:277)
#10 65.87 at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
#10 65.87 at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
#10 65.87 at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
#10 65.87 at java.base/java.lang.Thread.run(Thread.java:829)
#10 65.87 at org.jboss.threads.JBossThread.run(JBossThread.java:501)
#10 65.87 Caused by: java.lang.RuntimeException: Image generation failed. Exit code: 1
#10 65.87 at io.quarkus.deployment.pkg.steps.NativeImageBuildStep.imageGenerationFailed(NativeImageBuildStep.java:372)
#10 65.87 at io.quarkus.deployment.pkg.steps.NativeImageBuildStep.build(NativeImageBuildStep.java:215)
#10 65.87 ... 11 more
#10 65.87
#10 65.87 at io.quarkus.builder.Execution.run(Execution.java:116)
#10 65.87 at io.quarkus.builder.BuildExecutionBuilder.execute(BuildExecutionBuilder.java:79)
#10 65.88 at io.quarkus.deployment.QuarkusAugmentor.run(QuarkusAugmentor.java:161)
#10 65.88 at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:328)
#10 65.88 ... 200 more
#10 65.88 Caused by: java.lang.RuntimeException: Failed to build native image
#10 65.88 at io.quarkus.deployment.pkg.steps.NativeImageBuildStep.build(NativeImageBuildStep.java:236)
#10 65.88 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
#10 65.88 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
#10 65.88 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
#10 65.88 at io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:887)
#10 65.88 at io.quarkus.builder.BuildContext.run(BuildContext.java:277)
#10 65.88 at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
#10 65.88 at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
#10 65.88 at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
#10 65.88 at org.jboss.threads.JBossThread.run(JBossThread.java:501)
#10 65.88 Caused by: java.lang.RuntimeException: Image generation failed. Exit code: 1
#10 65.88 at io.quarkus.deployment.pkg.steps.NativeImageBuildStep.imageGenerationFailed(NativeImageBuildStep.java:372)
#10 65.88 at io.quarkus.deployment.pkg.steps.NativeImageBuildStep.build(NativeImageBuildStep.java:215)
#10 65.88 ... 9 more
#10 65.88
#10 65.88
#10 65.88 * Get more help at https://help.gradle.org
#10 65.88
#10 65.88 Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
#10 65.88 Use '--warning-mode all' to show the individual deprecation warnings.
#10 65.88 See https://docs.gradle.org/6.7.1/userguide/command_line_interface.html#sec:command_line_warnings
#10 65.88
#10 65.88 BUILD FAILED in 1m 4s
#10 65.88 10 actionable tasks: 10 executed
Upvotes: 0
Views: 1582
Reputation: 391
So I figured it out. Quarkus doesn't work well with the initial implementation of the KMS client: implementation 'com.amazonaws:aws-java-sdk-kms:1.11.483'
You should use implementation 'io.quarkus:quarkus-amazon-kms'
Upvotes: 1