quarkusio/quarkus · error · QuarkusCommandException

Failed to determine the list of installed extensions

Error message

Failed to determine the list of installed extensions

What it means

ListExtensionsCommandHandler.execute calls extensionManager.getInstalled() and reduces it to a map keyed by ArtifactKey. If reading the installed-extension state throws an IOException (typically parsing or reading the build file / installed extensions metadata), it is wrapped in a QuarkusCommandException with this message.

Source

Thrown at independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/commands/handlers/ListExtensionsCommandHandler.java:115

                currentFormatter = this::originsFormatter;
                log.info(String.format(ORIGINS_FORMAT, "✬", "ArtifactId", "Extension Name", "Version", "Origin"));
                break;
            case "full":
                currentFormatter = this::fullFormatter;
                log.info(String.format(FULL_FORMAT, "✬", "ArtifactId", "Extension", "Version", "Guide"));
                break;
            case "support-scope":
                currentFormatter = this::offeringsFormatter;
                log.info(String.format(SUPPORT_SCOPE_FORMAT, "✬", "ArtifactId", "Extension Name", "Version", "Support scope"));
                break;
        }

        Map<ArtifactKey, ArtifactCoords> installedByKey;
        try {
            installedByKey = extensionManager.getInstalled().stream()
                    .collect(toMap(ArtifactCoords::getKey, Function.identity()));
        } catch (IOException e) {
            throw new QuarkusCommandException("Failed to determine the list of installed extensions", e);
        }

        Predicate<Extension> categoryFilter;
        if (category != null && !category.isBlank()) {
            categoryFilter = e -> ExtensionProcessor.of(e).getCategories().contains(category);
        } else {
            categoryFilter = e -> true;
        }

        if (currentFormatter != null) {
            extensions.stream()
                    .filter(e -> !ExtensionProcessor.of(e).isUnlisted())
                    .filter(categoryFilter)
                    .sorted(Comparator.comparing(e -> e.getArtifact().getArtifactId()))
                    .forEach(e -> display(log, e, installedByKey.get(toKey(e)), all, installedOnly, currentFormatter));
        } else {
            List<Extension> filteredExtensions = extensions.stream()
                    .filter(e -> !ExtensionProcessor.of(e).isUnlisted())

View on GitHub (pinned to e1c734241f)

Solutions

  1. Fix the build file (mvn validate / gradle build) so it is readable and well-formed.
  2. Run the command from the actual project root containing pom.xml or build.gradle.
  3. Check file permissions and disk/network errors for the project directory.
  4. Restore the build file from version control if it is corrupted.
Defensive patterns

Strategy: try-catch

Validate before calling

// Verify the project/build file is readable and valid first
Path pom = projectDir.resolve("pom.xml");
if (!Files.isReadable(pom)) throw new IllegalStateException("pom.xml not readable");
new ProcessBuilder("mvn", "-q", "validate").directory(projectDir.toFile()).inheritIO().start().waitFor();

Try / catch

try {
    new ListExtensionsCommandHandler().execute(invocation);
} catch (QuarkusCommandException e) {
    if ("Failed to determine the list of installed extensions".equals(e.getMessage()) && e.getCause() instanceof IOException) {
        // inspect e.getCause() for file/parse issues, fix build file, retry
    } else throw e;
}

Prevention

When it happens

Trigger: Running quarkus:list (ListExtensions command) when extensionManager.getInstalled() throws IOException — e.g. unreadable or malformed pom.xml/build.gradle, or I/O failure accessing the project directory.

Common situations: Corrupted or partially edited pom.xml; running the command from a directory that is not a readable Quarkus project; file permission issues; symlinked/network drives with I/O errors.

Related errors


AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05). Data as JSON: /api/errors/a3e0dcb1351ba9db. Report an issue: GitHub.