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
- Fix filesystem permissions so the process can read application.properties
- Verify the path is a regular file, not a directory or broken symlink
- Move classloading config to the correct config source if the file is intentionally unreadable
- 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
- Ensure application.properties is a readable regular file for the runtime user
- Check container volume mounts don't mask the file as a directory
- Avoid restrictive file modes when processes run under different users
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
- Failed to read %s
- Failed to read resources from classpath
- Could not read class path resources having path '${resourceP
- Failed to load + pomPropsPath + from the classpath
- Could not access parent pom.
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/7920e23858bbb7a0.
Report an issue: GitHub.