quarkusio/quarkus · error · UncheckedIOException

IOException while reading message files (wrapped, no message

Error message

IOException while reading message files (wrapped, no message)

What it means

While scanning the application classpath for message bundle files, an IOException occurs during directory walking; it is wrapped into UncheckedIOException and propagates as a build failure. The original IOException carries the underlying cause.

Source

Thrown at extensions/qute/deployment/src/main/java/io/quarkus/qute/deployment/MessageBundleProcessor.java:1702

        archive.accept(tree -> {
            final Path messagesPath = tree.getPath(MESSAGES);
            if (messagesPath == null) {
                return;
            }
            try (Stream<Path> files = Files.list(messagesPath)) {
                Iterator<Path> iter = files.iterator();
                while (iter.hasNext()) {
                    Path filePath = iter.next();
                    if (Files.isRegularFile(filePath)) {
                        String messageFileName = messagesPath.relativize(filePath).toString();
                        if (File.separatorChar != '/') {
                            messageFileName = messageFileName.replace(File.separatorChar, '/');
                        }
                        messageFiles.add(new MessageFile(filePath, priority));
                    }
                }
            } catch (IOException e) {
                throw new UncheckedIOException(e);
            }
        });
    }

    private static class AppClassPredicate implements Predicate<String> {

        private final Function<String, String> additionalClassNameSanitizer;

        public AppClassPredicate() {
            this(Function.identity());
        }

        public AppClassPredicate(Function<String, String> additionalClassNameSanitizer) {
            this.additionalClassNameSanitizer = additionalClassNameSanitizer;
        }

        @Override
        public boolean test(String name) {

View on GitHub (pinned to e1c734241f)

Solutions

  1. Fix filesystem permissions on the resource directories being scanned
  2. Inspect the wrapped IOException cause (the UncheckedIOException message includes it) and address the underlying I/O problem
  3. Exclude synced/remote directories from the build workspace; re-run the build
Defensive patterns

Strategy: retry

Validate before calling

// Pre-flight: ensure resource dirs readable
Files.walkFileTree(msgDir, new SimpleFileVisitor<>() {});

Try / catch

try {
    build();
} catch (UncheckedIOException e) {
    logger.error("IO failure reading message files", e.getCause());
    // fix permissions/sync then retry
}

Prevention

When it happens

Trigger: Walking message template directories fails due to I/O errors: unreadable directories, stale file handles, filesystem errors, or files deleted/locked mid-scan (common in containers and CI).

Common situations: Docker/CI builds with permission problems on resource directories; network-mounted workspaces; antivirus or file sync (Dropbox/OneDrive) racing with the build.

Related errors


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