{"record":{"id":"2bf6681ae320b1f6","repo":"quarkusio/quarkus","slug":"handler-handlerclassname-has-not-been-properl","errorCode":null,"errorMessage":"Handler '${handlerClassName}' has not been properly configured.","messagePattern":"Handler '(.+?)' has not been properly configured\\.","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"critical","filePath":"extensions/resteasy-reactive/rest/runtime/src/main/java/io/quarkus/resteasy/reactive/server/runtime/ResteasyReactiveRuntimeRecorder.java","lineNumber":68,"sourceCode":"        deployment.getValue().setRuntimeConfiguration(runtimeConfiguration);\n\n        return new Supplier<>() {\n            @Override\n            public RuntimeConfiguration get() {\n                return runtimeConfiguration;\n            }\n        };\n    }\n\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\", \"ForLoopReplaceableByForEach\" })\n    public void configureHandlers(RuntimeValue<Deployment> deployment, Map<String, Supplier<?>> runtimeConfigMap) {\n        List<GenericRuntimeConfigurableServerRestHandler<?>> runtimeConfigurableServerRestHandlers = deployment.getValue()\n                .getRuntimeConfigurableServerRestHandlers();\n        for (int i = 0; i < runtimeConfigurableServerRestHandlers.size(); i++) {\n            GenericRuntimeConfigurableServerRestHandler handler = runtimeConfigurableServerRestHandlers.get(i);\n            Supplier<?> supplier = runtimeConfigMap.get(handler.getConfigurationClass().getName());\n            if (supplier == null) {\n                throw new IllegalStateException(\n                        \"Handler '\" + handler.getClass().getName() + \"' has not been properly configured.\");\n            }\n            handler.configure(supplier.get());\n        }\n    }\n}\n","sourceCodeStart":50,"sourceCodeEnd":75,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/resteasy-reactive/rest/runtime/src/main/java/io/quarkus/resteasy/reactive/server/runtime/ResteasyReactiveRuntimeRecorder.java#L50-L75","documentation":"At runtime startup, Quarkus REST iterates all registered GenericRuntimeConfigurableServerRestHandler instances and looks up a configuration Supplier in the runtime config map produced at deployment. If no supplier was recorded for a handler's configuration class, the handler cannot be wired and startup fails with IllegalStateException.","triggerScenarios":"An extension registers a runtime-configurable server REST handler in deployment but never produces the matching runtime configuration entry (runtimeConfigMap) for handler.getConfigurationClass().getName(); typically a broken/incompatible extension version mismatch between deployment and runtime.","commonSituations":"Mixing Quarkus versions (e.g. an extension built against a different Quarkus release); a custom handler added by an extension without recording its config supplier; corrupted incremental build state.","solutions":["Align all Quarkus extension versions with the platform BOM (run ./mvnw quarkus:update or fix the quarkus.platform.version)","Clean rebuild the application to eliminate stale build artifacts","Check which handler class is named in the message and report/upgrade the owning extension","If writing an extension, ensure the deployment step records the config supplier under the handler's configuration class name"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// fail fast at startup: verify every handler has a config supplier\nfor (var handler : handlers) {\n    if (!runtimeConfigMap.containsKey(handler.getConfigurationClass().getName())) {\n        throw new IllegalStateException(\"Missing runtime config for \" + handler.getClass().getName());\n    }\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep all Quarkus extension versions aligned with the platform BOM","Clean rebuild when adding/removing extensions","If authoring an extension, always record the config supplier for each registered handler"],"tags":["quarkus","resteasy-reactive","startup","configuration","extension"],"backgroundTag":"handler-not-configured","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"}