quarkusio/quarkus · error · RuntimeException
Quarkus REST server side components are not installed.
Error message
Quarkus REST server side components are not installed.
What it means
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.
Source
Thrown at independent-projects/resteasy-reactive/common/runtime/src/main/java/org/jboss/resteasy/reactive/common/jaxrs/RuntimeDelegateImpl.java:44
import org.jboss.resteasy.reactive.common.headers.CacheControlDelegate;
import org.jboss.resteasy.reactive.common.headers.CookieHeaderDelegate;
import org.jboss.resteasy.reactive.common.headers.DateDelegate;
import org.jboss.resteasy.reactive.common.headers.EntityTagDelegate;
import org.jboss.resteasy.reactive.common.headers.LinkDelegate;
import org.jboss.resteasy.reactive.common.headers.LocaleDelegate;
import org.jboss.resteasy.reactive.common.headers.MediaTypeHeaderDelegate;
import org.jboss.resteasy.reactive.common.headers.NewCookieHeaderDelegate;
import org.jboss.resteasy.reactive.common.headers.ObjectToStringDelegate;
public class RuntimeDelegateImpl extends RuntimeDelegate {
static final ResponseBuilderFactory factory;
static {
ResponseBuilderFactory result = new ResponseBuilderFactory() {
@Override
public Response.ResponseBuilder create() {
throw new RuntimeException("Quarkus REST server side components are not installed.");
}
@Override
public int priority() {
return 0;
}
@Override
public <T> ResponseBuilder<T> createRestResponse() {
throw new RuntimeException("Quarkus REST server side components are not installed.");
}
@Override
public Serialisers getSerialisers() {
throw new RuntimeException("Quarkus REST server side components are not installed.");
}
};
ServiceLoader<ResponseBuilderFactory> sl = ServiceLoader.load(ResponseBuilderFactory.class,View on GitHub (pinned to e1c734241f)
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
Example fix
// before (plain JUnit test, no runtime)
Response r = Response.ok(payload).build(); // RuntimeException
// after
// add dependency: io.quarkus:quarkus-rest
@QuarkusTest
class MyTest { ... Response r = Response.ok(payload).build(); ... } Defensive patterns
Strategy: try-catch
Validate before calling
Class.forName("io.quarkus.resteasy.reactive.server.runtime.QuarkusRestRuntimeDelegate"); // or check service file
Enumeration<ResponseBuilderFactory> it = ServiceLoader.load(ResponseBuilderFactory.class).iterator();
boolean installed = it.hasNext(); Type guard
boolean serverComponentsInstalled() {
return ServiceLoader.load(ResponseBuilderFactory.class).iterator().hasNext();
} Try / catch
try {
return Response.ok(payload).build();
} catch (RuntimeException e) {
if (e.getMessage().contains("not installed")) {
throw new IllegalStateException("Quarkus REST dependency missing", e);
}
throw e;
} Prevention
- 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
When it happens
Trigger: 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.
Common situations: 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.
Related errors
- type cannot be null
- Extra steps left over
- Unsupported value type: %s
- Unable to fully read json value
- Unknown start character for json value: %s
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/0a743207ae2e8078.
Report an issue: GitHub.