{"record":{"id":"eb9595aeea902a00","repo":"quarkusio/quarkus","slug":"failed-to-find-value-for-config-property-s-in-app","errorCode":null,"errorMessage":"Failed to find value for config property %s in application configuration. Please provide the value for the property, e.g. by adding %s=<desired-value> to your application.properties","messagePattern":"Failed to find value for config property (.+?) in application configuration\\. Please provide the value for the property, e\\.g\\. by adding (.+?)=<desired-value> to your application\\.properties","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"extensions/resteasy-reactive/rest-client/runtime/src/main/java/io/quarkus/rest/client/reactive/runtime/ConfigUtils.java","lineNumber":62,"sourceCode":"    /**\n     * Obtains the value of the {@param configProperty} expression. This expressions MUST be in the form of ${...}\n     */\n    public static String getConfigValue(String configProperty, boolean required) {\n        return doGetConfigValue(configProperty, required, stripPrefixAndSuffix(configProperty));\n    }\n\n    /**\n     * Obtains the value of the {@param propertyName} name, meaning that the name must NOT start with '${' or end with '}'\n     */\n    public static String doGetConfigValue(String configPropertyName, boolean required, String propertyName) {\n        try {\n            Optional<String> optionalValue = ConfigProvider.getConfig().getOptionalValue(propertyName, String.class);\n            if (optionalValue.isEmpty()) {\n                String message = String.format(\"Failed to find value for config property %s in application configuration. \"\n                        + \"Please provide the value for the property, e.g. by adding %s=<desired-value> to your application.properties\",\n                        configPropertyName, propertyName);\n                if (required) {\n                    throw new IllegalArgumentException(message);\n                }\n                log.warn(message);\n            }\n            return optionalValue.orElse(null);\n        } catch (IllegalArgumentException e) {\n            String message = \"Failed to convert value for property \" + configPropertyName + \" to String\";\n            if (required) {\n                throw new IllegalArgumentException(message, e);\n            } else {\n                log.warn(message);\n                return null;\n            }\n        }\n    }\n\n    private static String stripPrefixAndSuffix(String configProperty) {\n        // by now we know that configProperty is of form ${...}\n        return configProperty.substring(2, configProperty.length() - 1);","sourceCodeStart":44,"sourceCodeEnd":80,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/resteasy-reactive/rest-client/runtime/src/main/java/io/quarkus/rest/client/reactive/runtime/ConfigUtils.java#L44-L80","documentation":"doGetConfigValue looks up a MicroProfile config property required to configure a REST client (typically its base URL). When the property is absent and it is marked required, the library throws IllegalArgumentException with guidance on adding the property to application.properties. If not required, it only logs a warning and returns null.","triggerScenarios":"@RegisterRestClient client configured via config key quarkus.rest-client.<name>.url / uri missing from application.properties and no environment variable or system property provides it at runtime.","commonSituations":"Forgetting the config key after adding a new @RegisterRestClient interface; renaming a client class so the old config key no longer matches; running in an environment where the expected env var is not set; config profile mismatch (prop defined only under %prod while running dev).","solutions":["Add quarkus.rest-client.<name>.url=<value> to application.properties (or set the corresponding env var/system property)","Check the config key matches the client's configKey/class name and the active profile (%dev, %prod)","If the property may legitimately be absent, mark the lookup as non-required in the builder code that calls ConfigUtils"],"exampleFix":"# before\n# (nothing for my-client)\n# after\nquarkus.rest-client.my-client.url=http://localhost:8080","handlingStrategy":"validation","validationCode":"Optional<String> url = ConfigProvider.getConfig().getOptionalValue(\"quarkus.rest-client.my-client.url\", String.class);\nif (url.isEmpty()) {\n    throw new IllegalStateException(\"quarkus.rest-client.my-client.url is not set; add it to application.properties\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    // trigger client creation or first call\n} catch (IllegalArgumentException e) {\n    if (e.getMessage().contains(\"Failed to find value for config property\")) {\n        throw new IllegalStateException(\"Missing rest-client config property — check application.properties and active profile\", e);\n    }\n    throw e;\n}","preventionTips":["Define quarkus.rest-client.<name>.url/uri for every @RegisterRestClient interface","Check the active profile: properties under %prod are not visible in %dev","Prefer env vars with the standard MicroProfile mapping for containerized deployments"],"tags":["rest-client","config","missing-property"],"backgroundTag":"missing-config-property","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}