-
Notifications
You must be signed in to change notification settings - Fork 3k
Description
Describe the bug
Quarkus (version 3.26.1) does not seem to handle @Specializes
(correctly):
- given
- an interface
Strategy
- a default injectable bean
DefaultStrategy
(annotated with@Default
) implementing that interface - a specialized injectable bean
SpecializedStrategy
(annotated with@Specializes
) extendingDefaultStrategy
- an interface
- when injecting an instance of the interface in another bean
GreetingResource
- then an AmbiguousResolutionException is thrown
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: jakarta.enterprise.inject.spi.DeploymentException: jakarta.enterprise.inject.AmbiguousResolutionException: Ambiguous dependencies for type io.specializes.Strategy and qualifiers [@Default]
- injection target: io.specializes.GreetingResource#strategy
- declared on CLASS bean [types=[io.specializes.GreetingResource, java.lang.Object], qualifiers=[@Any, @Default], target=io.specializes.GreetingResource]
- available beans:
- CLASS bean [types=[io.specializes.DefaultStrategy, io.specializes.SpecializedStrategy, io.specializes.Strategy, java.lang.Object], qualifiers=[@Any, @Default], target=io.specializes.SpecializedStrategy]
- CLASS bean [types=[io.specializes.DefaultStrategy, io.specializes.Strategy, java.lang.Object], qualifiers=[@Any, @Default], target=io.specializes.DefaultStrategy]
at io.quarkus.arc.processor.BeanDeployment.processErrors(BeanDeployment.java:1594)
at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:341)
at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:178)
at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:488)
at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732)
at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:874)
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:840)
at org.jboss.threads.JBossThread.run(JBossThread.java:501)
Expected behavior
There should be no build error and the specialized injectable bean SpecializedStrategy
should be injected.
Actual behavior
There is a build error due to AmbiguousResolutionException
How to Reproduce?
Reproducer repo: https://github.com/pat-karakun/quarkus-cdi-specializes
Issue can be reproduced by running GreetingResourceTest.
More details in https://github.com/pat-karakun/quarkus-cdi-specializes/blob/main/README.md
Output of uname -a
or ver
Linux ... 4.18.0-553.69.1.el8_10.x86_64 #1 SMP Thu Aug 7 18:10:00 EDT 2025 x86_64 x86_64 x86_64 GNU/Linux
Output of java -version
openjdk version "17.0.16" 2025-07-15 LTS OpenJDK Runtime Environment (Red_Hat-17.0.16.0.8-1) (build 17.0.16+8-LTS) OpenJDK 64-Bit Server VM (Red_Hat-17.0.16.0.8-1) (build 17.0.16+8-LTS, mixed mode, sharing)
Quarkus version or git rev
3.26.1
Build tool (ie. output of mvnw --version
or gradlew --version
)
Apache Maven 3.8.3
Additional information
No response