quarkusio/quarkus · error · RuntimeException
Multiple providers found for REST Client '${class}'. Please
Error message
Multiple providers found for REST Client '${class}'. Please specify one by setting 'quarkus.rest-client."${class}".local-proxy-provider' to one the following providers: ${providers} What it means
When a REST Client's proxy provider is not explicitly configured and multiple non-default providers are registered, Dev Services cannot decide which one to use and throws a RuntimeException listing all candidates. Resolution requires setting `quarkus.rest-client."<client>".local-proxy-provider` to one of the listed names.
Source
Thrown at extensions/resteasy-reactive/rest-client/deployment/src/main/java/io/quarkus/rest/client/reactive/deployment/devservices/DevServicesRestClientHttpProxyProcessor.java:144
} else {
// the algorithm is the following:
// if only the default is around, use it
// if there is only one besides the default, use it
// if there are multiple ones, fail
List<DevServicesRestClientProxyProvider.BuildItem> nonDefault = restClientProxyProviderBuildItems.stream()
.filter(pib -> !pib.getProvider().name().equals(VertxHttpProxyDevServicesRestClientProxyProvider.NAME))
.toList();
if (nonDefault.isEmpty()) {
provider = VertxHttpProxyDevServicesRestClientProxyProvider.INSTANCE;
} else if (nonDefault.size() == 1) {
// TODO: this part of the algorithm is questionable...
provider = nonDefault.iterator().next().getProvider();
} else {
String availableProviders = restClientProxyProviderBuildItems.stream().map(bi -> bi.getProvider().name())
.collect(
Collectors.joining(","));
throw new RuntimeException("Multiple providers found for REST Client '" + toStart.getClassName()
+ "'. Please specify one by setting 'quarkus.rest-client.\"" + toStart.getClassName()
+ "\".local-proxy-provider' to one the following providers: " + availableProviders);
}
}
biToProviderMap.put(toStart, provider);
}
// here is where we set up providers
var providersToRun = new HashSet<>(biToProviderMap.values());
providersToRun.removeAll(runningProviders.get());
for (var provider : providersToRun) {
Closeable closeable = provider.setup();
if (closeable != null) {
providerCloseables.get().add(closeable);
}
runningProviders.get().add(provider);
}View on GitHub (pinned to e1c734241f)
Solutions
- Set `quarkus.rest-client."<client-class>".local-proxy-provider` to one of the provider names listed in the message
- Remove one of the competing provider extensions if it is unneeded
- Check if one provider extension offers default configuration that should be preferred
Example fix
// before (no provider configured; kafka and redis both registered) // after quarkus.rest-client."org.acme.MyClient".local-proxy-provider=kafka
Defensive patterns
Strategy: validation
Validate before calling
// Guard: ensure at most one proxy-provider extension per client when no explicit provider is set
String explicit = config.getValue("quarkus.rest-client.\"org.acme.MyClient\".local-proxy-provider", String.class, null);
int providerExtensions = 2; // count registered provider extensions in the project
if (explicit == null && providerExtensions > 1) {
throw new IllegalStateException("Set quarkus.rest-client.\"org.acme.MyClient\".local-proxy-provider");
} Prevention
- Explicitly set local-proxy-provider whenever multiple provider extensions are present
- Avoid adding redundant provider extensions to the same project
- Read the runtime error's provider list and pick one rather than guessing
When it happens
Trigger: Two or more extensions register RestClientProxyProviderBuildItems, none is marked default, and no `local-proxy-provider` is set for the client.
Common situations: Adding a second provider extension (e.g. both Kafka and another proxy provider) to a project that previously had one; upgrading Quarkus where a previously-default provider lost its default status.
Related errors
- Unable to find provider for REST Client '${class}' with name
- Failed to set dev services config
- Failed to set dev services override config
- Invalid expression: ${expression}
- Failed to find value for config property %s in application c
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/8627a088e9cf6bcc.
Report an issue: GitHub.