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

  1. Add the Quarkus REST (quarkus-rest / quarkus-resteasy-reactive) dependency so the server-side components are installed
  2. In tests, use @QuarkusTest or add quarkus-junit with the REST extension instead of plain JUnit
  3. Check that no dependency exclusion or conflicting ServiceLoader entry removes the ResponseBuilderFactory implementation
  4. 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

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


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