{"record":{"id":"915ceccd51f6c926","repo":"quarkusio/quarkus","slug":"failed-to-resolve-the-quarkus-extension-catalog-915cec","errorCode":null,"errorMessage":"Failed to resolve the Quarkus extension catalog","messagePattern":"Failed to resolve the Quarkus extension catalog","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/QuarkusProjectHelper.java","lineNumber":68,"sourceCode":"        if (cachedProject == null) {\n            PrintStream nullPrintStream = new PrintStream(OutputStream.nullOutputStream());\n            log = MessageWriter.info(nullPrintStream);\n            BuildTool buildTool = detectExistingBuildTool(projectDir);\n            if (buildTool == null) {\n                buildTool = BuildTool.MAVEN;\n            }\n            if (BuildTool.MAVEN.equals(buildTool)) {\n                try {\n                    return MavenProjectBuildFile.getProject(projectDir, log, null);\n                } catch (RegistryResolutionException e) {\n                    throw new RuntimeException(\"Failed to initialize the Quarkus Maven extension manager\", e);\n                }\n            }\n            final ExtensionCatalog catalog;\n            try {\n                catalog = resolveExtensionCatalog();\n            } catch (Exception e) {\n                throw new RuntimeException(\"Failed to resolve the Quarkus extension catalog\", e);\n            }\n            cachedProject = getProject(projectDir, catalog, buildTool, JavaVersion.NA, log);\n        }\n\n        return cachedProject;\n    }\n\n    public static QuarkusProject getProject(Path projectDir) {\n        BuildTool buildTool = detectExistingBuildTool(projectDir);\n        if (buildTool == null) {\n            buildTool = BuildTool.MAVEN;\n        }\n        return getProject(projectDir, buildTool);\n    }\n\n    @Deprecated\n    public static QuarkusProject getProject(Path projectDir, String quarkusVersion) {\n        // TODO remove this method once the default registry becomes available","sourceCodeStart":50,"sourceCodeEnd":86,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/QuarkusProjectHelper.java#L50-L86","documentation":"Also in QuarkusProjectHelper.getCachedProject: after the build tool is known, resolveExtensionCatalog() fetches the Quarkus extension catalog. Any exception during resolution (network, malformed descriptor, parsing) is wrapped as RuntimeException 'Failed to resolve the Quarkus extension catalog', and the cached project is not created.","triggerScenarios":"getCachedProject reaching resolveExtensionCatalog() on a non-Maven (or fallback) path where the catalog request throws — DNS failure, HTTP error, invalid JSON registry descriptor.","commonSituations":"Gradle projects built offline; proxy/firewall blocking registry.quarkus.io; corrupt cached registry metadata; a registry returning an unexpected/incompatible descriptor format.","solutions":["Restore connectivity to the Quarkus registry or configure a reachable mirror via quarkus.registry.","Clear the local registry cache so a fresh descriptor is downloaded.","Check that the registry returns a valid JSON descriptor (curl it and validate).","Work offline with a pre-seeded local registry cache."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"// Validate the registry descriptor resolves and parses before use\nHttpResponse<String> resp = client.send(HttpRequest.newBuilder(URI.create(registryUrl)).GET().build(), HttpResponse.BodyHandlers.ofString());\nif (resp.statusCode() != 200 || !resp.body().trim().startsWith(\"{\")) {\n    throw new IllegalStateException(\"Invalid registry descriptor from \" + registryUrl);\n}","typeGuard":null,"tryCatchPattern":"try {\n    project = QuarkusProjectHelper.getCachedProject(projectDir, log);\n} catch (RuntimeException e) {\n    if (\"Failed to resolve the Quarkus extension catalog\".equals(e.getMessage())) {\n        // fall back to a cached catalog or mirror URL, then retry\n    } else throw e;\n}","preventionTips":["Configure a reachable registry mirror via quarkus.registry","Clear corrupt local registry caches after failed downloads","Pre-seed local cache for offline Gradle/CI environments"],"tags":["registry","network","quarkus-cli","catalog"],"backgroundTag":"quarkus-registry-resolution-failed","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"}