This is a reproducer project demonstrating an issue with JaCoCo code coverage and the Quarkus Amazon Services SSM dependency.
When using JaCoCo for code coverage in a Quarkus project that includes the Amazon SSM dependency (io.quarkiverse.amazonservices:quarkus-amazon-ssm), the build process fails.
- Clone this repository
- Run the following command to build the project and reproduce the issue:
./gradlew buildThe build will fail during the test phase when JaCoCo attempts to instrument classes that interact with the Amazon SSM dependency.
Caused by: java.lang.RuntimeException: java.io.IOException: Error while instrumenting software.amazon.awssdk.services.ssm.DefaultSsmAsyncClient with JaCoCo 0.8.13.202504020838/78d5eff.
at io.quarkus.jacoco.deployment.JacocoProcessor$1.apply(JacocoProcessor.java:93)
at io.quarkus.jacoco.deployment.JacocoProcessor$1.apply(JacocoProcessor.java:83)
at io.quarkus.deployment.steps.ClassTransformingBuildStep.transformClass(ClassTransformingBuildStep.java:350)
at io.quarkus.deployment.steps.ClassTransformingBuildStep$2.call(ClassTransformingBuildStep.java:238)
at io.quarkus.deployment.steps.ClassTransformingBuildStep$2.call(ClassTransformingBuildStep.java:225)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
... 7 more
Caused by: java.io.IOException: Error while instrumenting software.amazon.awssdk.services.ssm.DefaultSsmAsyncClient with JaCoCo 0.8.13.202504020838/78d5eff.
at org.jacoco.core.instr.Instrumenter.instrumentError(Instrumenter.java:161)
at org.jacoco.core.instr.Instrumenter.instrument(Instrumenter.java:111)
at io.quarkus.jacoco.deployment.JacocoProcessor$1.apply(JacocoProcessor.java:87)
... 12 more
Caused by: org.objectweb.asm.ClassTooLargeException: Class too large: software/amazon/awssdk/services/ssm/DefaultSsmAsyncClient
at org.objectweb.asm.ClassWriter.toByteArray(ClassWriter.java:616)
at org.jacoco.core.instr.Instrumenter.instrument(Instrumenter.java:92)
at org.jacoco.core.instr.Instrumenter.instrument(Instrumenter.java:109)
Full stack trace:
org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not execute test class 'org.acme.GreetingResourceTest'.
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:55)
at [email protected]/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at [email protected]/java.lang.reflect.Method.invoke(Method.java:580)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:92)
at jdk.proxy1/jdk.proxy1.$Proxy4.processTestClass(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:183)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:132)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63)
at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72)
at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
Caused by: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step io.quarkus.deployment.steps.ClassTransformingBuildStep#handleClassTransformation threw an exception: java.lang.reflect.UndeclaredThrowableException
at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:895)
at io.quarkus.builder.BuildContext.run(BuildContext.java:255)
at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630)
at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1622)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1589)
at java.base/java.lang.Thread.run(Thread.java:1583)
at org.jboss.threads.JBossThread.run(JBossThread.java:501)
Caused by: java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.io.IOException: Error while instrumenting software.amazon.awssdk.services.ssm.DefaultSsmAsyncClient with JaCoCo 0.8.13.202504020838/78d5eff.
at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
at io.quarkus.deployment.steps.ClassTransformingBuildStep.handleClassTransformation(ClassTransformingBuildStep.java:273)
at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:733)
at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:889)
... 8 more
Caused by: java.lang.RuntimeException: java.io.IOException: Error while instrumenting software.amazon.awssdk.services.ssm.DefaultSsmAsyncClient with JaCoCo 0.8.13.202504020838/78d5eff.
at io.quarkus.jacoco.deployment.JacocoProcessor$1.apply(JacocoProcessor.java:93)
at io.quarkus.jacoco.deployment.JacocoProcessor$1.apply(JacocoProcessor.java:83)
at io.quarkus.deployment.steps.ClassTransformingBuildStep.transformClass(ClassTransformingBuildStep.java:350)
at io.quarkus.deployment.steps.ClassTransformingBuildStep$2.call(ClassTransformingBuildStep.java:238)
at io.quarkus.deployment.steps.ClassTransformingBuildStep$2.call(ClassTransformingBuildStep.java:225)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
... 7 more
Caused by: java.io.IOException: Error while instrumenting software.amazon.awssdk.services.ssm.DefaultSsmAsyncClient with JaCoCo 0.8.13.202504020838/78d5eff.
at org.jacoco.core.instr.Instrumenter.instrumentError(Instrumenter.java:161)
at org.jacoco.core.instr.Instrumenter.instrument(Instrumenter.java:111)
at io.quarkus.jacoco.deployment.JacocoProcessor$1.apply(JacocoProcessor.java:87)
... 12 more
Caused by: org.objectweb.asm.ClassTooLargeException: Class too large: software/amazon/awssdk/services/ssm/DefaultSsmAsyncClient
at org.objectweb.asm.ClassWriter.toByteArray(ClassWriter.java:616)
at org.jacoco.core.instr.Instrumenter.instrument(Instrumenter.java:92)
at org.jacoco.core.instr.Instrumenter.instrument(Instrumenter.java:109)
... 13 more
at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:372)
at io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:289)
at io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:61)
at io.quarkus.test.junit.AppMakerHelper.getStartupAction(AppMakerHelper.java:253)
at io.quarkus.test.junit.classloading.FacadeClassLoader.getOrCreateRuntimeClassLoader(FacadeClassLoader.java:556)
at io.quarkus.test.junit.classloading.FacadeClassLoader.getQuarkusClassLoader(FacadeClassLoader.java:453)
at io.quarkus.test.junit.classloading.FacadeClassLoader.loadClass(FacadeClassLoader.java:328)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:534)
at java.base/java.lang.Class.forName(Class.java:513)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.loadClass(JUnitPlatformTestClassProcessor.java:173)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.access$100(JUnitPlatformTestClassProcessor.java:62)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.execute(JUnitPlatformTestClassProcessor.java:109)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.execute(JUnitPlatformTestClassProcessor.java:99)
at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:54)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:53)
... 16 more
Caused by: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step io.quarkus.deployment.steps.ClassTransformingBuildStep#handleClassTransformation threw an exception: java.lang.reflect.UndeclaredThrowableException
at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:895)
at io.quarkus.builder.BuildContext.run(BuildContext.java:255)
at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630)
at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1622)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1589)
at java.base/java.lang.Thread.run(Thread.java:1583)
at org.jboss.threads.JBossThread.run(JBossThread.java:501)
Caused by: java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.io.IOException: Error while instrumenting software.amazon.awssdk.services.ssm.DefaultSsmAsyncClient with JaCoCo 0.8.13.202504020838/78d5eff.
at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
at io.quarkus.deployment.steps.ClassTransformingBuildStep.handleClassTransformation(ClassTransformingBuildStep.java:273)
at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:733)
at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:889)
... 8 more
Caused by: java.lang.RuntimeException: java.io.IOException: Error while instrumenting software.amazon.awssdk.services.ssm.DefaultSsmAsyncClient with JaCoCo 0.8.13.202504020838/78d5eff.
at io.quarkus.jacoco.deployment.JacocoProcessor$1.apply(JacocoProcessor.java:93)
at io.quarkus.jacoco.deployment.JacocoProcessor$1.apply(JacocoProcessor.java:83)
at io.quarkus.deployment.steps.ClassTransformingBuildStep.transformClass(ClassTransformingBuildStep.java:350)
at io.quarkus.deployment.steps.ClassTransformingBuildStep$2.call(ClassTransformingBuildStep.java:238)
at io.quarkus.deployment.steps.ClassTransformingBuildStep$2.call(ClassTransformingBuildStep.java:225)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
... 7 more
Caused by: java.io.IOException: Error while instrumenting software.amazon.awssdk.services.ssm.DefaultSsmAsyncClient with JaCoCo 0.8.13.202504020838/78d5eff.
at org.jacoco.core.instr.Instrumenter.instrumentError(Instrumenter.java:161)
at org.jacoco.core.instr.Instrumenter.instrument(Instrumenter.java:111)
at io.quarkus.jacoco.deployment.JacocoProcessor$1.apply(JacocoProcessor.java:87)
... 12 more
Caused by: org.objectweb.asm.ClassTooLargeException: Class too large: software/amazon/awssdk/services/ssm/DefaultSsmAsyncClient
at org.objectweb.asm.ClassWriter.toByteArray(ClassWriter.java:616)
at org.jacoco.core.instr.Instrumenter.instrument(Instrumenter.java:92)
at org.jacoco.core.instr.Instrumenter.instrument(Instrumenter.java:109)
... 13 more
at io.quarkus.builder.Execution.run(Execution.java:122)
at io.quarkus.builder.BuildExecutionBuilder.execute(BuildExecutionBuilder.java:78)
at io.quarkus.deployment.QuarkusAugmentor.run(QuarkusAugmentor.java:160)
at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:368)
... 31 more
Caused by: java.lang.reflect.UndeclaredThrowableException
at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:895)
at io.quarkus.builder.BuildContext.run(BuildContext.java:255)
at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630)
at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1622)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1589)
at java.base/java.lang.Thread.run(Thread.java:1583)
at org.jboss.threads.JBossThread.run(JBossThread.java:501)
Caused by: java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.io.IOException: Error while instrumenting software.amazon.awssdk.services.ssm.DefaultSsmAsyncClient with JaCoCo 0.8.13.202504020838/78d5eff.
at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
at io.quarkus.deployment.steps.ClassTransformingBuildStep.handleClassTransformation(ClassTransformingBuildStep.java:273)
at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:733)
at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:889)
... 8 more
Caused by: java.lang.RuntimeException: java.io.IOException: Error while instrumenting software.amazon.awssdk.services.ssm.DefaultSsmAsyncClient with JaCoCo 0.8.13.202504020838/78d5eff.
at io.quarkus.jacoco.deployment.JacocoProcessor$1.apply(JacocoProcessor.java:93)
at io.quarkus.jacoco.deployment.JacocoProcessor$1.apply(JacocoProcessor.java:83)
at io.quarkus.deployment.steps.ClassTransformingBuildStep.transformClass(ClassTransformingBuildStep.java:350)
at io.quarkus.deployment.steps.ClassTransformingBuildStep$2.call(ClassTransformingBuildStep.java:238)
at io.quarkus.deployment.steps.ClassTransformingBuildStep$2.call(ClassTransformingBuildStep.java:225)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
... 7 more
Caused by: java.io.IOException: Error while instrumenting software.amazon.awssdk.services.ssm.DefaultSsmAsyncClient with JaCoCo 0.8.13.202504020838/78d5eff.
at org.jacoco.core.instr.Instrumenter.instrumentError(Instrumenter.java:161)
at org.jacoco.core.instr.Instrumenter.instrument(Instrumenter.java:111)
at io.quarkus.jacoco.deployment.JacocoProcessor$1.apply(JacocoProcessor.java:87)
... 12 more
Caused by: org.objectweb.asm.ClassTooLargeException: Class too large: software/amazon/awssdk/services/ssm/DefaultSsmAsyncClient
at org.objectweb.asm.ClassWriter.toByteArray(ClassWriter.java:616)
at org.jacoco.core.instr.Instrumenter.instrument(Instrumenter.java:92)
at org.jacoco.core.instr.Instrumenter.instrument(Instrumenter.java:109)
... 13 more