{"record":{"id":"4c2b2bbe110681ce","repo":"quarkusio/quarkus","slug":"failed-to-locate-quarkus-core-in-the-extension-cat","errorCode":null,"errorMessage":"Failed to locate quarkus-core in the extension catalog","messagePattern":"Failed to locate quarkus-core in the extension catalog","errorType":"exception","errorClass":"QuarkusCommandException","httpStatus":null,"severity":"error","filePath":"independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/commands/handlers/CreateProjectCommandHandler.java","lineNumber":502,"sourceCode":"            }\n        }\n        return result;\n    }\n\n    private static boolean containsQuarkusCore(List<Extension> extensions) {\n        for (Extension e : extensions) {\n            if (e.getArtifact().getArtifactId().equals(QUARKUS_CORE)) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n    private static Extension findQuarkusCore(ExtensionCatalog extensionCatalog) throws QuarkusCommandException {\n        final Optional<Extension> quarkusCore = extensionCatalog.getExtensions().stream()\n                .filter(e -> e.getArtifact().getArtifactId().equals(QUARKUS_CORE)).findFirst();\n        if (quarkusCore.isEmpty()) {\n            throw new QuarkusCommandException(\"Failed to locate quarkus-core in the extension catalog\");\n        }\n        return quarkusCore.get();\n    }\n\n    private static void addOriginsWithPreferences(final List<ExtensionOrigins> extOrigins, Extension e) {\n        ExtensionOrigins.Builder eoBuilder = null;\n        for (ExtensionOrigin c : e.getOrigins()) {\n            if (c instanceof ExtensionCatalog catalog) {\n                final OriginPreference op = (OriginPreference) c.getMetadata().get(Constants.REGISTRY_CLIENT_ORIGIN_PREFERENCE);\n                if (op != null) {\n                    if (eoBuilder == null) {\n                        eoBuilder = ExtensionOrigins.builder(e.getArtifact().getKey());\n                    }\n                    eoBuilder.addOrigin(catalog, op);\n                }\n            }\n        }\n        if (eoBuilder != null) {","sourceCodeStart":484,"sourceCodeEnd":520,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/commands/handlers/CreateProjectCommandHandler.java#L484-L520","documentation":"findQuarkusCore scans the resolved ExtensionCatalog for an extension whose artifactId equals QUARKUS_CORE ('quarkus-core'). If the catalog contains no such entry, the handler cannot anchor version resolution and throws. This guards the rest of project creation, which assumes the core extension is present in the catalog.","triggerScenarios":"An ExtensionCatalog resolved via quarkusCore(...) that lacks any extension with artifactId 'quarkus-core' — typically a custom, filtered, or corrupted registry descriptor passed to the project creation API.","commonSituations":"Using a self-hosted/filtered registry mirror that strips core; hand-crafted catalog JSON missing quarkus-core; registry misconfiguration pointing at a platform that doesn't publish core.","solutions":["Restore the official Quarkus registry configuration (remove custom quarkus.registry overrides) so the full catalog including quarkus-core is fetched.","If operating a custom registry, publish quarkus-core in the catalog.","Clear the cached registry data under the Quarkus registry cache directory and re-resolve.","Verify the registry descriptor JSON actually contains io.quarkus:quarkus-core."],"exampleFix":"// before (custom registry missing core)\n-Dquarkus.registry=https://internal.example.com/quarkus/registry/filtered.json\n// after\n-Dquarkus.registry=https://registry.quarkus.io (or remove override entirely)","handlingStrategy":"validation","validationCode":"ExtensionCatalog catalog = /* resolved catalog */;\nboolean corePresent = catalog.getExtensions().stream()\n    .anyMatch(e -> \"quarkus-core\".equals(e.getArtifact().getArtifactId()));\nif (!corePresent) {\n    throw new IllegalStateException(\"Selected registry does not publish quarkus-core\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    createProject(...);\n} catch (QuarkusCommandException e) {\n    if (e.getMessage().equals(\"Failed to locate quarkus-core in the extension catalog\")) {\n        // switch to the default registry and retry\n    } else throw e;\n}","preventionTips":["Do not strip quarkus-core from custom registry descriptors","Validate registry JSON contains io.quarkus:quarkus-core before publishing","Clear corrupted registry caches"],"tags":["quarkus-cli","extension-catalog","registry","quarkus-core"],"backgroundTag":"extension-catalog-missing-quarkus-core","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}