user1819111
user1819111

Reputation: 391

quarkus fails to compile to native

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

Answers (1)

user1819111
user1819111

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

Related Questions