{"record":{"id":"0a743207ae2e8078","repo":"quarkusio/quarkus","slug":"quarkus-rest-server-side-components-are-not-instal","errorCode":null,"errorMessage":"Quarkus REST server side components are not installed.","messagePattern":"Quarkus REST server side components are not installed\\.","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"independent-projects/resteasy-reactive/common/runtime/src/main/java/org/jboss/resteasy/reactive/common/jaxrs/RuntimeDelegateImpl.java","lineNumber":44,"sourceCode":"import org.jboss.resteasy.reactive.common.headers.CacheControlDelegate;\nimport org.jboss.resteasy.reactive.common.headers.CookieHeaderDelegate;\nimport org.jboss.resteasy.reactive.common.headers.DateDelegate;\nimport org.jboss.resteasy.reactive.common.headers.EntityTagDelegate;\nimport org.jboss.resteasy.reactive.common.headers.LinkDelegate;\nimport org.jboss.resteasy.reactive.common.headers.LocaleDelegate;\nimport org.jboss.resteasy.reactive.common.headers.MediaTypeHeaderDelegate;\nimport org.jboss.resteasy.reactive.common.headers.NewCookieHeaderDelegate;\nimport org.jboss.resteasy.reactive.common.headers.ObjectToStringDelegate;\n\npublic class RuntimeDelegateImpl extends RuntimeDelegate {\n\n    static final ResponseBuilderFactory factory;\n\n    static {\n        ResponseBuilderFactory result = new ResponseBuilderFactory() {\n            @Override\n            public Response.ResponseBuilder create() {\n                throw new RuntimeException(\"Quarkus REST server side components are not installed.\");\n            }\n\n            @Override\n            public int priority() {\n                return 0;\n            }\n\n            @Override\n            public <T> ResponseBuilder<T> createRestResponse() {\n                throw new RuntimeException(\"Quarkus REST server side components are not installed.\");\n            }\n\n            @Override\n            public Serialisers getSerialisers() {\n                throw new RuntimeException(\"Quarkus REST server side components are not installed.\");\n            }\n        };\n        ServiceLoader<ResponseBuilderFactory> sl = ServiceLoader.load(ResponseBuilderFactory.class,","sourceCodeStart":26,"sourceCodeEnd":62,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/resteasy-reactive/common/runtime/src/main/java/org/jboss/resteasy/reactive/common/jaxrs/RuntimeDelegateImpl.java#L26-L62","documentation":"RuntimeDelegateImpl's fallback ResponseBuilderFactory throws when create() is called because no server-side REST implementation was discovered via ServiceLoader. The default factory is a stub that always fails; a real factory must be present on the classpath so the static initializer can replace it.","triggerScenarios":"Calling RuntimeDelegateImpl-backed Response builder APIs (indirectly Response.ok()/Response.status() etc.) in an application or test where the Quarkus REST server-side deployment/runtime artifacts are absent, so ServiceLoader finds no ResponseBuilderFactory.","commonSituations":"Unit tests that use JAX-RS Response/UriBuilder APIs without a Quarkus test extension; a plain Java SE app missing the resteasy-reactive runtime provider; dependency exclusions removing the server-side components.","solutions":["Add the Quarkus REST (quarkus-rest / quarkus-resteasy-reactive) dependency so the server-side components are installed","In tests, use @QuarkusTest or add quarkus-junit with the REST extension instead of plain JUnit","Check that no dependency exclusion or conflicting ServiceLoader entry removes the ResponseBuilderFactory implementation","Verify META-INF/services registration is intact in the packaged artifact"],"exampleFix":"// before (plain JUnit test, no runtime)\nResponse r = Response.ok(payload).build(); // RuntimeException\n// after\n// add dependency: io.quarkus:quarkus-rest\n@QuarkusTest\nclass MyTest { ... Response r = Response.ok(payload).build(); ... }","handlingStrategy":"try-catch","validationCode":"Class.forName(\"io.quarkus.resteasy.reactive.server.runtime.QuarkusRestRuntimeDelegate\"); // or check service file\nEnumeration<ResponseBuilderFactory> it = ServiceLoader.load(ResponseBuilderFactory.class).iterator();\nboolean installed = it.hasNext();","typeGuard":"boolean serverComponentsInstalled() {\n    return ServiceLoader.load(ResponseBuilderFactory.class).iterator().hasNext();\n}","tryCatchPattern":"try {\n    return Response.ok(payload).build();\n} catch (RuntimeException e) {\n    if (e.getMessage().contains(\"not installed\")) {\n        throw new IllegalStateException(\"Quarkus REST dependency missing\", e);\n    }\n    throw e;\n}","preventionTips":["Keep quarkus-rest on the runtime classpath","Use @QuarkusTest for tests touching Response APIs","Do not exclude resteasy-reactive runtime modules","Verify META-INF/services descriptors after shading"],"tags":["jaxrs","runtime-delegate","classpath","missing-provider"],"backgroundTag":"missing-runtime-provider","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"}