quarkusio/quarkus · error · RuntimeException
Failed to resolve extension catalog
Error message
Failed to resolve extension catalog
What it means
MavenProjectBuildFile.getProject resolves the Quarkus extension catalog through the registry catalog resolver for the project's imported platforms (or the current Quarkus version). When the resolver throws RegistryResolutionException, it is wrapped in a RuntimeException with message 'Failed to resolve extension catalog'. This means one or more configured Quarkus registries could not be reached or produced no resolvable platform descriptor.
Source
Thrown at independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/buildfile/MavenProjectBuildFile.java:112
} else {
final ArtifactDescriptorResult descriptor = describe(artifactResolver, projectPom);
managedDeps = toArtifactCoords(descriptor.getManagedDependencies());
deps = () -> toArtifactCoords(descriptor.getDependencies());
importedPlatforms = collectPlatformDescriptors(managedDeps, log);
quarkusVersion = getQuarkusVersion(managedDeps);
}
final ExtensionCatalog extensionCatalog;
if (catalogResolver.hasRegistries()) {
try {
if (!importedPlatforms.isEmpty()) {
extensionCatalog = catalogResolver.resolveExtensionCatalog(importedPlatforms);
} else {
extensionCatalog = quarkusVersion == null ? catalogResolver.resolveExtensionCatalog()
: catalogResolver.resolveExtensionCatalog(quarkusVersion);
}
} catch (RegistryResolutionException e) {
throw new RuntimeException("Failed to resolve extension catalog", e);
}
} else {
if (importedPlatforms.isEmpty()) {
extensionCatalog = ToolsUtils.resolvePlatformDescriptorDirectly(null, null, quarkusVersion, artifactResolver,
log);
} else {
extensionCatalog = ToolsUtils.mergePlatforms(importedPlatforms, artifactResolver);
}
}
final MavenProjectBuildFile extensionManager = new MavenProjectBuildFile(projectDir, extensionCatalog,
projectModel, deps, managedDeps, projectProps, projectPom == null ? null : artifactResolver);
final List<ResourceLoader> codestartResourceLoaders = codestartLoadersBuilder(log).catalog(extensionCatalog)
.artifactResolver(artifactResolver).build();
final JavaVersion javaVersion = resolveJavaVersion(projectProps);
return QuarkusProject.of(projectDir, extensionCatalog,
codestartResourceLoaders, log, extensionManager, javaVersion);
}
View on GitHub (pinned to e1c734241f)
Solutions
- Check network connectivity to the configured registry and proxy settings (HTTP_PROXY, ~/.m2/settings.xml proxies)
- Verify the Quarkus platform version and imported platform coordinates exist and are spelled correctly
- Use ToolsUtils-style direct platform resolution or configure a fallback/offline registry mirror
- Inspect the wrapped cause (RegistryResolutionException) for the exact failing registry/URL
Example fix
// before
// quarkus.platform.version=999-SNAPSHOT (not published) -> resolve fails
// after
// pin an existing released platform version in pom.xml:
// <quarkus.platform.version>3.2.0.Final</quarkus.platform.version>
// and retry getProject(); optionally catch and fall back:
try {
extensionCatalog = catalogResolver.resolveExtensionCatalog(importedPlatforms);
} catch (RegistryResolutionException e) {
extensionCatalog = ToolsUtils.resolvePlatformDescriptorDirectly(null, null, quarkusVersion, artifactResolver, log);
} Defensive patterns
Strategy: try-catch
Validate before calling
// pre-check reachability of the registry before resolution
HttpURLConnection c = (HttpURLConnection) new URL("https://registry.quarkus.io")
.openConnection();
c.setConnectTimeout(3000);
if (c.getResponseCode() != 200) throw new IllegalStateException("Quarkus registry unreachable"); Try / catch
try {
extensionCatalog = projectBuildFile.getProject();
} catch (RuntimeException e) {
if (e.getCause() instanceof RegistryResolutionException) {
// fall back to direct platform descriptor resolution or offline catalog
} else {
throw e;
}
} Prevention
- Verify network/proxy configuration allows access to registry.quarkus.io
- Pin a published quarkus.platform.version; avoid nonexistent or SNAPSHOT versions
- Configure offline mirrors for air-gapped/CI environments
- Inspect the RegistryResolutionException cause to identify the failing registry
- Implement a fallback to direct platform descriptor resolution for offline use
When it happens
Trigger: Calling MavenProjectBuildFile.getProject() when the configured registry (e.g. registry.quarkus.io / registry.quarkus.redhat.com) is unreachable, a registry artifact version does not exist, network/proxy blocks the request, or imported platform coordinates cannot be resolved.
Common situations: Corporate proxy or firewall blocking registry.quarkus.io; offline/air-gapped environments; typos or unavailable versions in quarkus.platform.version / imported platforms; registry outages; stale local Maven repository state.
Related errors
- Failed to resolve Quarkus extension catalog
- Failed to resolve the extension catalog for stream '${stream
- Failed to resolve the available updates
- Failed to list extension categories
- Failed to initialize Quarkus Maven extension manager
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/a45e2f6854452764.
Report an issue: GitHub.