quarkusio/quarkus · error · IllegalStateException

No current injection point found

Error message

No current injection point found

What it means

Thrown by ConfigStaticInitCheckInterceptor.recordConfigValue when no InjectionPoint can be determined for a config value being recorded during STATIC_INIT. The interceptor scans method parameters for an InjectionPoint instance before persisting the value for later runtime-vs-static comparison; if the caller passes none (or recordConfigValue is invoked directly, as ConfigPropertyCreator does with a null injection point pre-check), the sentinel guard rejects recording because there is no property metadata to key the recorded value to.

Source

Thrown at extensions/arc/runtime/src/main/java/io/quarkus/arc/runtime/ConfigStaticInitCheckInterceptor.java:56

    Object aroundInvoke(InvocationContext context) throws Exception {
        InjectionPoint injectionPoint = null;
        for (Object parameter : context.getParameters()) {
            if (parameter instanceof InjectionPoint) {
                injectionPoint = (InjectionPoint) parameter;
                break;
            }
        }
        recordConfigValue(injectionPoint, configValues);
        return context.proceed();
    }

    static void recordConfigValue(InjectionPoint injectionPoint, ConfigStaticInitValues configValues) {
        if (ExecutionMode.current() != ExecutionMode.STATIC_INIT) {
            // No-op for any other execution mode
            return;
        }
        if (injectionPoint == null) {
            throw new IllegalStateException("No current injection point found");
        }
        ConfigProperty configProperty = null;
        for (Annotation qualifier : injectionPoint.getQualifiers()) {
            if (qualifier instanceof ConfigProperty) {
                configProperty = ((ConfigProperty) qualifier);
            }
        }
        if (configProperty == null
                || injectionPoint.getAnnotated().isAnnotationPresent(StaticInitSafe.class)) {
            return;
        }
        String propertyName = configProperty.name();
        SmallRyeConfig config = ConfigProvider.getConfig().unwrap(SmallRyeConfig.class);
        String value = config.getConfigValue(propertyName).getValue();
        if (value == null) {
            value = getDefaultValue(injectionPoint, configProperty);
        }
        if (value == null) {

View on GitHub (pinned to e1c734241f)

Solutions

  1. Ensure config-producing methods intercepted during STATIC_INIT declare an InjectionPoint parameter
  2. Avoid invoking the intercepted bean programmatically without injection point metadata during static init
  3. Verify the synthetic config bean was generated by the current extension version — stale generated classes can drop the InjectionPoint parameter
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at extensions/arc/runtime/src/main/java/io/quarkus/arc/runtime/ConfigStaticInitCheckInterceptor.java:56 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05). Data as JSON: /api/errors/2c43759bad5cd351. Report an issue: GitHub.