quarkusio/quarkus · error · AppModelResolverException

Failed to read properties from ${propsPath}

Error message

Failed to read properties from ${propsPath}

What it means

addPlatformProperties() imports platform metadata from a properties file at propsPath. If the file cannot be opened or read (missing, unreadable, I/O error), it wraps the IOException in AppModelResolverException with this message. The platform import cannot proceed without this file's contents.

Source

Thrown at independent-projects/bootstrap/app-model/src/main/java/io/quarkus/bootstrap/model/PlatformImportsImpl.java:112

        platformImports.computeIfAbsent(bomCoords, this::newPlatformImport).descriptorFound = true;
    }

    public void addPlatformProperties(String groupId, String artifactId, String classifier, String type, String version,
            Path propsPath) throws AppModelResolverException {
        final ArtifactCoords bomCoords = ArtifactCoords.pom(groupId,
                artifactId.substring(0,
                        artifactId.length() - BootstrapConstants.PLATFORM_PROPERTIES_ARTIFACT_ID_SUFFIX.length()),
                version);
        platformImports.computeIfAbsent(bomCoords, this::newPlatformImport);
        importedPlatformBoms.computeIfAbsent(groupId, g -> new ArrayList<>());
        if (!importedPlatformBoms.get(groupId).contains(bomCoords)) {
            importedPlatformBoms.get(groupId).add(bomCoords);

            final Properties props = new Properties();
            try (InputStream is = Files.newInputStream(propsPath)) {
                props.load(is);
            } catch (IOException e) {
                throw new AppModelResolverException("Failed to read properties from " + propsPath, e);
            }
            for (Map.Entry<?, ?> prop : props.entrySet()) {
                final String name = String.valueOf(prop.getKey());
                if (name.startsWith(BootstrapConstants.PLATFORM_PROPERTY_PREFIX)) {
                    if (isPlatformReleaseInfo(name)) {
                        addPlatformRelease(name, String.valueOf(prop.getValue()));
                    } else {
                        collectedProps.putIfAbsent(name, String.valueOf(prop.getValue().toString()));
                    }
                }
            }
        }
    }

    /**
     * This method is meant to be called when a new platform BOM import was detected.
     *
     * @param bom platform BOM coordinates

View on GitHub (pinned to e1c734241f)

Solutions

  1. Verify propsPath exists and is readable before importing (Files.isReadable)
  2. Rebuild/refresh the project so the platform properties file is regenerated
  3. Check the path passed to resolvePlatformImports points at the correct build output directory

Example fix

// before
imports.addPlatformProperties(Path.of("target/missing-platform.properties"), bomCoords);
// after
Path propsPath = Path.of("target/quarkus-platform.properties");
if (!Files.isReadable(propsPath)) {
    throw new IllegalStateException("Platform properties missing: " + propsPath);
}
imports.addPlatformProperties(propsPath, bomCoords);
Defensive patterns

Strategy: validation

Validate before calling

if (propsPath == null || !Files.isRegularFile(propsPath) || !Files.isReadable(propsPath)) {
    throw new IllegalStateException("Platform properties file missing or unreadable: " + propsPath);
}

Try / catch

try {
    imports.addPlatformProperties(propsPath, bomCoords);
} catch (AppModelResolverException e) {
    log.errorf(e, "Cannot read platform properties at %s", propsPath);
    throw e;
}

Prevention

When it happens

Trigger: Calling addPlatformProperties / resolvePlatformImports / setUpPlatformConfiguration with a propsPath that does not exist or is not readable; the file was deleted or locked mid-read.

Common situations: Stale quarkus-platform properties path after a clean of the build directory; read-only CI workspace; path pointing to the wrong module's target directory; file removed by a concurrent build.

Understand the failure class

Background: "failed to read file", EACCES, ENOENT and "could not read <path>" errors: when a program can't read a file from disk — this error's family across 49 libraries.

Related errors


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