{"record":{"id":"a45e2f6854452764","repo":"quarkusio/quarkus","slug":"failed-to-resolve-extension-catalog-a45e2f","errorCode":null,"errorMessage":"Failed to resolve extension catalog","messagePattern":"Failed to resolve extension catalog","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/buildfile/MavenProjectBuildFile.java","lineNumber":112,"sourceCode":"        } else {\n            final ArtifactDescriptorResult descriptor = describe(artifactResolver, projectPom);\n            managedDeps = toArtifactCoords(descriptor.getManagedDependencies());\n            deps = () -> toArtifactCoords(descriptor.getDependencies());\n            importedPlatforms = collectPlatformDescriptors(managedDeps, log);\n            quarkusVersion = getQuarkusVersion(managedDeps);\n        }\n\n        final ExtensionCatalog extensionCatalog;\n        if (catalogResolver.hasRegistries()) {\n            try {\n                if (!importedPlatforms.isEmpty()) {\n                    extensionCatalog = catalogResolver.resolveExtensionCatalog(importedPlatforms);\n                } else {\n                    extensionCatalog = quarkusVersion == null ? catalogResolver.resolveExtensionCatalog()\n                            : catalogResolver.resolveExtensionCatalog(quarkusVersion);\n                }\n            } catch (RegistryResolutionException e) {\n                throw new RuntimeException(\"Failed to resolve extension catalog\", e);\n            }\n        } else {\n            if (importedPlatforms.isEmpty()) {\n                extensionCatalog = ToolsUtils.resolvePlatformDescriptorDirectly(null, null, quarkusVersion, artifactResolver,\n                        log);\n            } else {\n                extensionCatalog = ToolsUtils.mergePlatforms(importedPlatforms, artifactResolver);\n            }\n        }\n        final MavenProjectBuildFile extensionManager = new MavenProjectBuildFile(projectDir, extensionCatalog,\n                projectModel, deps, managedDeps, projectProps, projectPom == null ? null : artifactResolver);\n        final List<ResourceLoader> codestartResourceLoaders = codestartLoadersBuilder(log).catalog(extensionCatalog)\n                .artifactResolver(artifactResolver).build();\n        final JavaVersion javaVersion = resolveJavaVersion(projectProps);\n        return QuarkusProject.of(projectDir, extensionCatalog,\n                codestartResourceLoaders, log, extensionManager, javaVersion);\n    }\n","sourceCodeStart":94,"sourceCodeEnd":130,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/buildfile/MavenProjectBuildFile.java#L94-L130","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":"// before\n// quarkus.platform.version=999-SNAPSHOT (not published) -> resolve fails\n// after\n// pin an existing released platform version in pom.xml:\n// <quarkus.platform.version>3.2.0.Final</quarkus.platform.version>\n// and retry getProject(); optionally catch and fall back:\ntry {\n    extensionCatalog = catalogResolver.resolveExtensionCatalog(importedPlatforms);\n} catch (RegistryResolutionException e) {\n    extensionCatalog = ToolsUtils.resolvePlatformDescriptorDirectly(null, null, quarkusVersion, artifactResolver, log);\n}","handlingStrategy":"try-catch","validationCode":"// pre-check reachability of the registry before resolution\nHttpURLConnection c = (HttpURLConnection) new URL(\"https://registry.quarkus.io\")\n        .openConnection();\nc.setConnectTimeout(3000);\nif (c.getResponseCode() != 200) throw new IllegalStateException(\"Quarkus registry unreachable\");","typeGuard":null,"tryCatchPattern":"try {\n    extensionCatalog = projectBuildFile.getProject();\n} catch (RuntimeException e) {\n    if (e.getCause() instanceof RegistryResolutionException) {\n        // fall back to direct platform descriptor resolution or offline catalog\n    } else {\n        throw e;\n    }\n}","preventionTips":["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"],"tags":["network","registry","maven","catalog-resolution"],"backgroundTag":"failed-to-resolve-extension-catalog","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}