quarkus: Intermittent build error `ClassPathElement.getResource(String) is null`
Describe the bug
I am intermittently receiving a build error during @QuarkusTest runs in Gradle.
Noticeably they don’t appear to be random but intermittent with certain tests; although I’m not sure exactly what that means. Considering the stack trace I can’t imagine this is related to our code.
The issue is similar/same as #14611 but that issue is targeting a much older version and was marked invalid.
Here is the complete logged exception:
java.lang.RuntimeException: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: java.lang.NullPointerException: Cannot invoke "io.quarkus.bootstrap.classloading.ClassPathResource.getUrl()" because the return value of "io.quarkus.bootstrap.classloading.ClassPathElement.getResource(String)" is null
at io.quarkus.bootstrap.classloading.QuarkusClassLoader.getResource(QuarkusClassLoader.java:354)
at io.quarkus.test.common.PathTestHelper.isTestClass(PathTestHelper.java:257)
at io.quarkus.test.junit.QuarkusTestExtension$TestBuildChainFunction$1$1$1.test(QuarkusTestExtension.java:1374)
at io.quarkus.test.junit.QuarkusTestExtension$TestBuildChainFunction$1$1$1.test(QuarkusTestExtension.java:1371)
at io.quarkus.arc.deployment.ArcProcessor$6.test(ArcProcessor.java:350)
at io.quarkus.arc.deployment.ArcProcessor$6.test(ArcProcessor.java:347)
at io.quarkus.arc.processor.UnusedBeans.findRemovableBeans(UnusedBeans.java:54)
at io.quarkus.arc.processor.BeanDeployment.removeUnusedBeans(BeanDeployment.java:434)
at io.quarkus.arc.processor.BeanDeployment.removeUnusedComponents(BeanDeployment.java:349)
at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:295)
at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:140)
at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:517)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:909)
at io.quarkus.builder.BuildContext.run(BuildContext.java:281)
at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
at java.base/java.lang.Thread.run(Thread.java:833)
at org.jboss.threads.JBossThread.run(JBossThread.java:501)
Caused by: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: java.lang.NullPointerException: Cannot invoke "io.quarkus.bootstrap.classloading.ClassPathResource.getUrl()" because the return value of "io.quarkus.bootstrap.classloading.ClassPathElement.getResource(String)" is null
at io.quarkus.bootstrap.classloading.QuarkusClassLoader.getResource(QuarkusClassLoader.java:354)
at io.quarkus.test.common.PathTestHelper.isTestClass(PathTestHelper.java:257)
at io.quarkus.test.junit.QuarkusTestExtension$TestBuildChainFunction$1$1$1.test(QuarkusTestExtension.java:1374)
at io.quarkus.test.junit.QuarkusTestExtension$TestBuildChainFunction$1$1$1.test(QuarkusTestExtension.java:1371)
at io.quarkus.arc.deployment.ArcProcessor$6.test(ArcProcessor.java:350)
at io.quarkus.arc.deployment.ArcProcessor$6.test(ArcProcessor.java:347)
at io.quarkus.arc.processor.UnusedBeans.findRemovableBeans(UnusedBeans.java:54)
at io.quarkus.arc.processor.BeanDeployment.removeUnusedBeans(BeanDeployment.java:434)
at io.quarkus.arc.processor.BeanDeployment.removeUnusedComponents(BeanDeployment.java:349)
at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:295)
at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:140)
at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:517)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:909)
at io.quarkus.builder.BuildContext.run(BuildContext.java:281)
at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
at java.base/java.lang.Thread.run(Thread.java:833)
at org.jboss.threads.JBossThread.run(JBossThread.java:501)
Caused by: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: java.lang.NullPointerException: Cannot invoke "io.quarkus.bootstrap.classloading.ClassPathResource.getUrl()" because the return value of "io.quarkus.bootstrap.classloading.ClassPathElement.getResource(String)" is null
at io.quarkus.bootstrap.classloading.QuarkusClassLoader.getResource(QuarkusClassLoader.java:354)
at io.quarkus.test.common.PathTestHelper.isTestClass(PathTestHelper.java:257)
at io.quarkus.test.junit.QuarkusTestExtension$TestBuildChainFunction$1$1$1.test(QuarkusTestExtension.java:1374)
at io.quarkus.test.junit.QuarkusTestExtension$TestBuildChainFunction$1$1$1.test(QuarkusTestExtension.java:1371)
at io.quarkus.arc.deployment.ArcProcessor$6.test(ArcProcessor.java:350)
at io.quarkus.arc.deployment.ArcProcessor$6.test(ArcProcessor.java:347)
at io.quarkus.arc.processor.UnusedBeans.findRemovableBeans(UnusedBeans.java:54)
at io.quarkus.arc.processor.BeanDeployment.removeUnusedBeans(BeanDeployment.java:434)
at io.quarkus.arc.processor.BeanDeployment.removeUnusedComponents(BeanDeployment.java:349)
at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:295)
at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:140)
at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:517)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:909)
at io.quarkus.builder.BuildContext.run(BuildContext.java:281)
at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
at java.base/java.lang.Thread.run(Thread.java:833)
at org.jboss.threads.JBossThread.run(JBossThread.java:501)
Caused by: java.lang.NullPointerException: Cannot invoke "io.quarkus.bootstrap.classloading.ClassPathResource.getUrl()" because the return value of "io.quarkus.bootstrap.classloading.ClassPathElement.getResource(String)" is null
Expected behavior
Build completes without intermittent errors.
Actual behavior
See above
How to Reproduce?
I cannot reproduce this in a “small” project. We have a 10 module Gradle project that I am seeing the issue in. While intermittent I would say it happens 60% of the time at this point.
Output of uname -a or ver
macOS 12.6
Output of java -version
OpenJDK 17.0.1
GraalVM version (if different from Java)
No response
Quarkus version or git rev
2.13.0.Final
Build tool (ie. output of mvnw --version or gradlew --version)
Gradle 7.5.1
Additional information
No response
About this issue
- Original URL
- State: open
- Created 2 years ago
- Comments: 19 (16 by maintainers)
Actually, I guess I can check pick your changes back onto
2.13.0.Finalbranch and test it that way.