{"record":{"id":"0da37b4468d291ac","repo":"quarkusio/quarkus","slug":"unsupported-injection-point-target-injectionpoin","errorCode":null,"errorMessage":"Unsupported injection point target: <injectionPoint>","messagePattern":"Unsupported injection point target: <injectionPoint>","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"extensions/arc/deployment/src/main/java/io/quarkus/arc/deployment/MicroProfileConfigProcessor.java","lineNumber":166,"sourceCode":"\n            AnnotationInstance configProperty = injectionPoint.getRequiredQualifier(MP_CONFIG_PROPERTY);\n            if (configProperty != null) {\n                AnnotationValue nameValue = configProperty.value(\"name\");\n                AnnotationValue defaultValue = configProperty.value(\"defaultValue\");\n                String propertyName;\n                if (nameValue != null) {\n                    propertyName = nameValue.asString();\n                } else {\n                    // org.acme.Foo.config\n                    if (injectionPoint.isField()) {\n                        FieldInfo field = injectionPoint.getAnnotationTarget().asField();\n                        propertyName = getPropertyName(field.name(), field.declaringClass());\n                    } else if (injectionPoint.isParam()) {\n                        MethodParameterInfo methodParameterInfo = injectionPoint.getAnnotationTarget().asMethodParameter();\n                        propertyName = getPropertyName(methodParameterInfo.name(),\n                                methodParameterInfo.method().declaringClass());\n                    } else {\n                        throw new IllegalStateException(\"Unsupported injection point target: \" + injectionPoint);\n                    }\n                }\n\n                Type injectedType = injectionPoint.getType();\n                if (DotNames.OPTIONAL.equals(injectedType.name())\n                        || DotNames.OPTIONAL_INT.equals(injectedType.name())\n                        || DotNames.OPTIONAL_LONG.equals(injectedType.name())\n                        || DotNames.OPTIONAL_DOUBLE.equals(injectedType.name())\n                        || DotNames.INSTANCE.equals(injectedType.name())\n                        || DotNames.PROVIDER.equals(injectedType.name())\n                        || SUPPLIER.equals(injectedType.name())\n                        || SR_CONFIG_VALUE.equals(injectedType.name())\n                        || MP_CONFIG_VALUE.equals(injectedType.name())) {\n                    // Never validate container objects\n                    continue;\n                }\n\n                String propertyDefaultValue = null;","sourceCodeStart":148,"sourceCodeEnd":184,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/arc/deployment/src/main/java/io/quarkus/arc/deployment/MicroProfileConfigProcessor.java#L148-L184","documentation":"During ArC CDI deployment, MicroProfileConfigProcessor scans injection points of @ConfigProperty to register config property names. When an injection point's annotation target is neither a field nor a method parameter, the processor cannot derive a property name and throws this IllegalStateException. It guards against unsupported injection point kinds (e.g. bean constructor parameters handled elsewhere or synthetic targets).","triggerScenarios":"An @ConfigProperty injection point whose AnnotationTarget is not a field (injectionPoint.isField() false) and not a method parameter (isParam() false), e.g. an unusual/synthetic injection point added by an extension or a decorator that the processor does not recognize.","commonSituations":"Custom CDI extensions or annotations transformers generating @ConfigProperty injection points on unexpected targets; Quarkus/ArC version upgrades introducing new injection point kinds; hand-built synthetic beans accidentally declaring @ConfigProperty.","solutions":["Identify the injection point from the full stack/bean info and remove the misplaced @ConfigProperty annotation","Check for custom AnnotationsTransformers or extensions that add @ConfigProperty to non-field/non-param targets","Upgrade Quarkus to the latest patch — supported target kinds may have been extended","If it comes from a third-party extension, report an issue with a minimal reproducer"],"exampleFix":"// before: @ConfigProperty on an unsupported synthetic target\n// after: move the injection to a normal bean field\npublic class MyBean {\n    @ConfigProperty(name = \"my.prop\")\n    String myProp;\n}","handlingStrategy":"validation","validationCode":"if (ip.getAnnotationTarget().kind() != AnnotationTarget.Kind.FIELD\n    && !ip.isParam()) {\n    throw new IllegalStateException(\"Skip/fix: unsupported target \" + ip.getAnnotationTarget().kind());\n}","typeGuard":"static boolean isSupportedTarget(InjectionPointInfo ip) {\n    return ip.isField() || ip.isParam();\n}","tryCatchPattern":null,"preventionTips":["Only use @ConfigProperty on bean fields or method parameters","Avoid custom transformers that add @ConfigProperty to exotic targets","Keep Quarkus and extensions on aligned versions"],"tags":["cdi","quarkus-arc","config-property","build-time"],"backgroundTag":"unsupported-injection-point-target","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}