Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

missing constructor parameter annotation reported as if member is missing annotation #37923

Closed
maxandersen opened this issue Dec 23, 2023 · 2 comments · Fixed by #37998
Closed
Labels
area/arc Issue related to ARC (dependency injection) area/user-experience Will make us lose users kind/enhancement New feature or request
Milestone

Comments

@maxandersen
Copy link
Contributor

Describe the bug

I had something like this:

    ObjectMapper mapper;
    
    String token;

    enum State {
        INIT, AUTHENTICATING, READY, DONE
    }


    public HomeAssistantWS(ObjectMapper mapper,  String token) {
        this.mapper = mapper;
        this.token = token;
    }

and got:

2023-12-23 08:56:09,834 ERROR [io.qua.dep.dev.IsolatedDevModeMain] (Aesh InputStream Reader) Failed to start quarkus [Error Occurred After Shutdown]: 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.UnsatisfiedResolutionException: Unsatisfied dependency for type java.lang.String and qualifiers [@Default]
        - java member: dk.xam.hassq.HomeAssistantWS():token
        - declared on CLASS bean [types=[dk.xam.hassq.HomeAssistantWS, java.lang.Object], qualifiers=[@Default, @Any], target=dk.xam.hassq.HomeAssistantWS]
        The following beans match by type, but none have matching qualifiers:
                - Bean [class=java.lang.String, qualifiers=[@Any, @ConfigProperty]]
        at io.quarkus.arc.processor.BeanDeployment.processErrors(BeanDeployment.java:1453)
        at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:311)
        at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:160)
        at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:472)
        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:849)
        at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
        at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
        at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
        at java.base/java.lang.Thread.run(Thread.java:833)
        at org.jboss.threads.JBossThread.run(JBossThread.java:501)
Caused by: jakarta.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type java.lang.String and qualifiers [@Default]
        - java member: dk.xam.hassq.HomeAssistantWS():token
        - declared on CLASS bean [types=[dk.xam.hassq.HomeAssistantWS, java.lang.Object], qualifiers=[@Default, @Any], target=dk.xam.hassq.HomeAssistantWS]
        The following beans match by type, but none have matching qualifiers:
                - Bean [class=java.lang.String, qualifiers=[@Any, @ConfigProperty]]
        at io.quarkus.arc.processor.Beans.resolveInjectionPoint(Beans.java:478)
        at io.quarkus.arc.processor.BeanInfo.init(BeanInfo.java:624)
        at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:299)
        ... 13 more

        at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:334)
        at io.quarkus.runner.bootstrap.AugmentActionImpl.reloadExistingApplication(AugmentActionImpl.java:264)
        at io.quarkus.runner.bootstrap.AugmentActionImpl.reloadExistingApplication(AugmentActionImpl.java:60)
        at io.quarkus.deployment.dev.IsolatedDevModeMain.restartApp(IsolatedDevModeMain.java:190)
        at io.quarkus.deployment.dev.IsolatedDevModeMain.restartCallback(IsolatedDevModeMain.java:173)
        at io.quarkus.deployment.dev.RuntimeUpdatesProcessor.doScan(RuntimeUpdatesProcessor.java:541)
        at io.quarkus.deployment.console.ConsoleStateManager$2.accept(ConsoleStateManager.java:124)
        at io.quarkus.deployment.console.ConsoleStateManager$2.accept(ConsoleStateManager.java:114)
        at io.quarkus.deployment.console.ConsoleStateManager$1.accept(ConsoleStateManager.java:60)
        at io.quarkus.deployment.console.ConsoleStateManager$1.accept(ConsoleStateManager.java:49)
        at io.quarkus.deployment.console.AeshConsole.lambda$setup$1(AeshConsole.java:278)
        at org.aesh.terminal.EventDecoder.accept(EventDecoder.java:118)
        at org.aesh.terminal.EventDecoder.accept(EventDecoder.java:31)
        at org.aesh.terminal.io.Decoder.write(Decoder.java:133)
        at org.aesh.readline.tty.terminal.TerminalConnection.openBlocking(TerminalConnection.java:216)
        at org.aesh.readline.tty.terminal.TerminalConnection.openBlocking(TerminalConnection.java:203)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:833)
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: jakarta.enterprise.inject.spi.DeploymentException: jakarta.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type java.lang.String and qualifiers [@Default]
        - java member: dk.xam.hassq.HomeAssistantWS():token
        - declared on CLASS bean [types=[dk.xam.hassq.HomeAssistantWS, java.lang.Object], qualifiers=[@Default, @Any], target=dk.xam.hassq.HomeAssistantWS]
        The following beans match by type, but none have matching qualifiers:
                - Bean [class=java.lang.String, qualifiers=[@Any, @ConfigProperty]]
        at io.quarkus.arc.processor.BeanDeployment.processErrors(BeanDeployment.java:1453)
        at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:311)
        at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:160)
        at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:472)
        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:849)
        at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
        at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
        at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
        at java.base/java.lang.Thread.run(Thread.java:833)
        at org.jboss.threads.JBossThread.run(JBossThread.java:501)
Caused by: jakarta.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type java.lang.String and qualifiers [@Default]
        - java member: dk.xam.hassq.HomeAssistantWS():token
        - declared on CLASS bean [types=[dk.xam.hassq.HomeAssistantWS, java.lang.Object], qualifiers=[@Default, @Any], target=dk.xam.hassq.HomeAssistantWS]
        The following beans match by type, but none have matching qualifiers:
                - Bean [class=java.lang.String, qualifiers=[@Any, @ConfigProperty]]
        at io.quarkus.arc.processor.Beans.resolveInjectionPoint(Beans.java:478)
        at io.quarkus.arc.processor.BeanInfo.init(BeanInfo.java:624)
        at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:299)
        ... 13 more

        at io.quarkus.builder.Execution.run(Execution.java:123)
        at io.quarkus.builder.BuildExecutionBuilder.execute(BuildExecutionBuilder.java:79)
        at io.quarkus.deployment.QuarkusAugmentor.run(QuarkusAugmentor.java:160)
        at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:330)
        ... 18 more
Caused by: jakarta.enterprise.inject.spi.DeploymentException: jakarta.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type java.lang.String and qualifiers [@Default]
        - java member: dk.xam.hassq.HomeAssistantWS():token
        - declared on CLASS bean [types=[dk.xam.hassq.HomeAssistantWS, java.lang.Object], qualifiers=[@Default, @Any], target=dk.xam.hassq.HomeAssistantWS]
        The following beans match by type, but none have matching qualifiers:
                - Bean [class=java.lang.String, qualifiers=[@Any, @ConfigProperty]]
        at io.quarkus.arc.processor.BeanDeployment.processErrors(BeanDeployment.java:1453)
        at io.quarkus.arc.processor.BeanDep.init(BeanDeployment.java:311)
        at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:160)
        at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:472)
        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:849)
        at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
        at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
        at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
        at java.base/java.lang.Thread.run(Thread.java:833)
        at org.jboss.threads.JBossThread.run(JBossThread.java:501)
Caused by: jakarta.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type java.lang.String and qualifiers [@Default]
        - java member: dk.xam.hassq.HomeAssistantWS():token
        - declared on CLASS bean [types=[dk.xam.hassq.HomeAssistantWS, java.lang.Object], qualifiers=[@Default, @Any], target=dk.xam.hassq.HomeAssistantWS]
        The following beans match by type, but none have matching qualifiers:
                - Bean [class=java.lang.String, qualifiers=[@Any, @ConfigProperty]]
        at io.quarkus.arc.processor.Beans.resolveInjectionPoint(Beans.java:478)
        at io.quarkus.arc.processor.BeanInfo.init(BeanInfo.java:624)
        at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:299)
        ... 13 more

I saw " - java member: dk.xam.hassq.HomeAssistantWS():token" and kept trying to change the member called token.
Even renamed it but still fail and it was not using the renamed token.

Spent a lot of time until i noticed the constructor. I hadn't thought about it being the constructor as it said "member" in error and the ObjectMapper was not mentioned as error.

Adding @ConfigProperty(name="token") String token solved it all but could we more explicilty say parameter or even constructor is the thing missing some more annotation?

Expected behavior

No response

Actual behavior

No response

How to Reproduce?

No response

Output of uname -a or ver

No response

Output of java -version

No response

Quarkus version or git rev

No response

Build tool (ie. output of mvnw --version or gradlew --version)

No response

Additional information

No response

@maxandersen maxandersen added the kind/bug Something isn't working label Dec 23, 2023
@geoand geoand added area/arc Issue related to ARC (dependency injection) and removed triage/needs-triage labels Jan 3, 2024
@quarkus-bot
Copy link

quarkus-bot bot commented Jan 3, 2024

/cc @Ladicek (arc), @manovotn (arc), @mkouba (arc)

@geoand geoand added kind/enhancement New feature or request area/user-experience Will make us lose users and removed kind/bug Something isn't working labels Jan 3, 2024
@Ladicek
Copy link
Contributor

Ladicek commented Jan 3, 2024

That makes sense and shouldn't be hard to improve, I'll submit a PR in a bit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/arc Issue related to ARC (dependency injection) area/user-experience Will make us lose users kind/enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants