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
- Fix the build file (mvn validate / gradle build) so it is readable and well-formed.
- Run the command from the actual project root containing pom.xml or build.gradle.
- Check file permissions and disk/network errors for the project directory.
- 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
- Keep pom.xml/build.gradle well-formed (validate before running CLI commands)
- Run commands from the project root
- Ensure filesystem permissions and healthy storage
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
- Failed to remove extensions
- Error while generating the project update script
- Failed to open path tree with root %s
- Failed to read %s
- Failed to read resources from classpath
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/a3e0dcb1351ba9db.
Report an issue: GitHub.