{"record":{"id":"7920e23858bbb7a0","repo":"quarkusio/quarkus","slug":"failed-to-load-bootstrap-classloading-config-from","errorCode":null,"errorMessage":"Failed to load bootstrap classloading config from application.properties","messagePattern":"Failed to load bootstrap classloading config from application\\.properties","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"independent-projects/bootstrap/core/src/main/java/io/quarkus/bootstrap/app/ConfiguredClassLoading.java","lineNumber":73,"sourceCode":"            return this;\n        }\n\n        public Builder setApplicationModel(ApplicationModel model) {\n            this.appModel = model;\n            return this;\n        }\n\n        public ConfiguredClassLoading build() {\n\n            final String profilePrefix = getProfilePrefix(mode);\n            for (Path path : applicationRoot) {\n                Path props = path.resolve(\"application.properties\");\n                if (Files.exists(props)) {\n                    final Properties p = new Properties();\n                    try (InputStream in = Files.newInputStream(props)) {\n                        p.load(in);\n                    } catch (IOException e) {\n                        throw new RuntimeException(\"Failed to load bootstrap classloading config from application.properties\",\n                                e);\n                    }\n                    readProperties(profilePrefix, p);\n                }\n            }\n\n            // this is to be able to support exclusion of artifacts from build classpath configured using system properties\n            readProperties(profilePrefix, System.getProperties());\n\n            if (appModel != null) {\n                for (ResolvedDependency d : appModel.getDependencies()) {\n                    if (d.isClassLoaderParentFirst()) {\n                        parentFirstArtifacts.add(d.getKey());\n                    }\n                }\n\n                if (mode == Mode.TEST) {\n                    final WorkspaceModule module = appModel.getApplicationModule();","sourceCodeStart":55,"sourceCodeEnd":91,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/bootstrap/core/src/main/java/io/quarkus/bootstrap/app/ConfiguredClassLoading.java#L55-L91","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":"// before\n-rw------- application.properties (owned by root, process runs as 'quarkus')\n// after\nchmod 644 application.properties && chown quarkus:quarkus application.properties","handlingStrategy":"validation","validationCode":"Path props = appDir.resolve(\"application.properties\");\nif (Files.exists(props) && (!Files.isRegularFile(props) || !Files.isReadable(props))) {\n    throw new IllegalStateException(\"application.properties not readable: \" + props);\n}","typeGuard":null,"tryCatchPattern":"try {\n    ConfiguredClassLoading.build(appDir, profilePrefix);\n} catch (RuntimeException e) {\n    if (e.getMessage().contains(\"Failed to load bootstrap classloading config\")) {\n        // check permissions/mount, inspect e.getCause() IOException\n    }\n}","preventionTips":["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"],"tags":["io","configuration","classpath","file-access"],"backgroundTag":"config-file-unreadable","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}