quarkusio/quarkus · error · RuntimeException
Unable to find provider for REST Client '${class}' with name
Error message
Unable to find provider for REST Client '${class}' with name '${name}' What it means
Dev Services for REST Client builds local HTTP proxies by matching each client's requested provider name against registered RestClientProxyProviderBuildItems. When no registered provider matches the configured `local-proxy-provider` name, startup of the dev service fails with this RuntimeException.
Source
Thrown at extensions/resteasy-reactive/rest-client/deployment/src/main/java/io/quarkus/rest/client/reactive/deployment/devservices/DevServicesRestClientHttpProxyProcessor.java:121
runningProxies.get().removeAll(proxiesToClose);
// we need to figure out which ones to start
Set<RestClientHttpProxyBuildItem> proxiesToRun = new HashSet<>(requestedProxies);
proxiesToRun.removeAll(runningProxies.get());
// determine which providers to use for each of the new proxies to start
Map<RestClientHttpProxyBuildItem, DevServicesRestClientProxyProvider> biToProviderMap = new HashMap<>();
for (var toStart : proxiesToRun) {
DevServicesRestClientProxyProvider provider;
if (toStart.getProvider().isPresent()) {
String requestedProviderName = toStart.getProvider().get();
var maybeProviderBI = restClientProxyProviderBuildItems
.stream()
.filter(pbi -> requestedProviderName.equals(pbi.getProvider().name()))
.findFirst();
if (maybeProviderBI.isEmpty()) {
throw new RuntimeException("Unable to find provider for REST Client '" + toStart.getClassName()
+ "' with name '" + requestedProviderName + "'");
}
provider = maybeProviderBI.get().getProvider();
} 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();View on GitHub (pinned to e1c734241f)
Solutions
- Fix the `local-proxy-provider` value to exactly match a registered provider name
- Remove the `local-proxy-provider` property to let automatic resolution pick a provider
- Add the extension that registers the desired provider to the project
Example fix
// before quarkus.rest-client."my-client".local-proxy-provider=missing-provider // after quarkus.rest-client."my-client".local-proxy-provider=kafka
Defensive patterns
Strategy: validation
Validate before calling
// Confirm the provider name is registered before starting dev services
String provider = config.getValue("quarkus.rest-client.\"org.acme.MyClient\".local-proxy-provider", String.class);
List<String> known = List.of("kafka" /* registered providers */);
if (!known.contains(provider)) throw new IllegalArgumentException("Unknown provider: " + provider); Prevention
- Copy provider names from extension documentation exactly
- Remove local-proxy-provider if relying on defaults
- After upgrading extensions, re-check provider names in application.properties
When it happens
Trigger: Setting `quarkus.rest-client."my-client".local-proxy-provider=some-name` where `some-name` doesn't match any provider registered via RestClientProxyProviderBuildItem in the current build.
Common situations: Typo in the provider name in application.properties; renaming a provider extension in an upgrade; the provider extension not being on the classpath so its build item never registers.
Related errors
- Multiple providers found for REST Client '${class}'. Please
- Failed to set dev services config
- Failed to set dev services override config
- The 'quarkus.hibernate-orm.mapping.format.global' configurat
- Either 'quarkus.oidc-client.auth-server-url' or absolute 'qu
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/8229dbbf727649f6.
Report an issue: GitHub.