{"record":{"id":"baffd5794cdf077c","repo":"quarkusio/quarkus","slug":"failed-to-load-extension-description-path","errorCode":null,"errorMessage":"Failed to load extension description + path","messagePattern":"Failed to load extension description \\+ path","errorType":"exception","errorClass":"UncheckedIOException","httpStatus":null,"severity":"error","filePath":"devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusApplicationModelTask.java","lineNumber":726,"sourceCode":"        if (providesCapabilities != null) {\n            modelBuilder\n                    .addExtensionCapabilities(\n                            CapabilityContract.of(artifactBuilder.toGACTVString(), providesCapabilities, null));\n        }\n        return true;\n    }\n\n    private static Properties readDescriptor(final Path path) {\n        final Properties rtProps;\n        if (!Files.exists(path)) {\n            // not a platform artifact\n            return null;\n        }\n        rtProps = new Properties();\n        try (BufferedReader reader = Files.newBufferedReader(path)) {\n            rtProps.load(reader);\n        } catch (IOException e) {\n            throw new UncheckedIOException(\"Failed to load extension description \" + path, e);\n        }\n        return rtProps;\n    }\n}\n","sourceCodeStart":708,"sourceCodeEnd":731,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusApplicationModelTask.java#L708-L731","documentation":"Quarkus's Gradle application plugin loads an extension's quarkus-extension.properties description file from disk while building the application model. If the properties file exists at the resolved path but cannot be read (I/O error), the task wraps the IOException in an UncheckedIOException. This usually indicates a file permission problem or the file disappearing mid-read, not a bad extension.","triggerScenarios":"Files.newBufferedReader(path) throws IOException while loading an extension descriptor in QuarkusApplicationModelTask — e.g. unreadable permissions, file deleted between resolution and read, or a broken symlink in the local repository.","commonSituations":"Corrupted or partially-downloaded ~/.m2/repository entries; extension jars wiped by a concurrent build; read-only or root-owned files on CI; antivirus locking files on Windows.","solutions":["Delete the affected artifact directory from the local Gradle/Maven cache and re-run the build so it is re-downloaded","Check file permissions on the extension descriptor path reported in the message and restore read access","Stop concurrent builds/IDE sync that may delete files mid-read, then retry","Re-import/refresh the project in the IDE to force re-resolution of the dependency model"],"exampleFix":"// before\nProperties rtProps = new Properties();\ntry (BufferedReader reader = Files.newBufferedReader(path)) { rtProps.load(reader); }\n// after\n// fix at the environment level: re-download the corrupted artifact\n// ./gradlew --stop && rm -rf ~/.m2/repository/io/quarkus/<broken-extension> && ./gradlew build","handlingStrategy":"try-catch","validationCode":"Path p = extensionDescriptionPath;\nif (p != null && Files.isRegularFile(p) && Files.isReadable(p)) {\n    // safe to let the plugin load it\n}","typeGuard":"boolean isReadableFile(Path p) {\n    return p != null && Files.isRegularFile(p) && Files.isReadable(p);\n}","tryCatchPattern":"try {\n    // run the gradle build/task\n} catch (UncheckedIOException e) {\n    if (e.getMessage().startsWith(\"Failed to load extension description\")) {\n        // delete the offending artifact dir from the local repo and retry once\n    } else { throw e; }\n}","preventionTips":["Avoid concurrent builds sharing the same local repository","Regularly prune and re-download a corrupted ~/.m2 / Gradle cache","Don't run builds as root on shared CI caches","Close IDE syncs while running command-line builds"],"tags":["gradle","io","extension-descriptor","file-read"],"backgroundTag":"extension-descriptor-load-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"}