quarkusio/quarkus · error · RuntimeException

Failed to load bootstrap classloading config from applicatio

Error message

Failed to load bootstrap classloading config from application.properties

What it means

ConfiguredClassLoading.build reads application.properties from the application's path to load bootstrap classloading configuration (e.g. parent-first/serialized packages). If the file exists but an IOException occurs while reading or parsing it, this RuntimeException is thrown wrapping the IO error.

Source

Thrown at independent-projects/bootstrap/core/src/main/java/io/quarkus/bootstrap/app/ConfiguredClassLoading.java:73

            return this;
        }

        public Builder setApplicationModel(ApplicationModel model) {
            this.appModel = model;
            return this;
        }

        public ConfiguredClassLoading build() {

            final String profilePrefix = getProfilePrefix(mode);
            for (Path path : applicationRoot) {
                Path props = path.resolve("application.properties");
                if (Files.exists(props)) {
                    final Properties p = new Properties();
                    try (InputStream in = Files.newInputStream(props)) {
                        p.load(in);
                    } catch (IOException e) {
                        throw new RuntimeException("Failed to load bootstrap classloading config from application.properties",
                                e);
                    }
                    readProperties(profilePrefix, p);
                }
            }

            // this is to be able to support exclusion of artifacts from build classpath configured using system properties
            readProperties(profilePrefix, System.getProperties());

            if (appModel != null) {
                for (ResolvedDependency d : appModel.getDependencies()) {
                    if (d.isClassLoaderParentFirst()) {
                        parentFirstArtifacts.add(d.getKey());
                    }
                }

                if (mode == Mode.TEST) {
                    final WorkspaceModule module = appModel.getApplicationModule();

View on GitHub (pinned to e1c734241f)

Solutions

  1. Fix filesystem permissions so the process can read application.properties
  2. Verify the path is a regular file, not a directory or broken symlink
  3. Move classloading config to the correct config source if the file is intentionally unreadable
  4. Check container volume mounts if running in Docker/Kubernetes

Example fix

// before
-rw------- application.properties (owned by root, process runs as 'quarkus')
// after
chmod 644 application.properties && chown quarkus:quarkus application.properties
Defensive patterns

Strategy: validation

Validate before calling

Path props = appDir.resolve("application.properties");
if (Files.exists(props) && (!Files.isRegularFile(props) || !Files.isReadable(props))) {
    throw new IllegalStateException("application.properties not readable: " + props);
}

Try / catch

try {
    ConfiguredClassLoading.build(appDir, profilePrefix);
} catch (RuntimeException e) {
    if (e.getMessage().contains("Failed to load bootstrap classloading config")) {
        // check permissions/mount, inspect e.getCause() IOException
    }
}

Prevention

When it happens

Trigger: An application.properties file exists at <app-dir>/application.properties but cannot be read: permission errors, the path being a directory, file locked, or an encoding/stream failure during Properties.load.

Common situations: Read-protected application.properties (chmod issues), running in a container where the file was mounted as a directory, file descriptor/permissions changes after deployment, or a malformed file causing an underlying IO/parse error.

Related errors


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