quarkusio/quarkus · error · RuntimeException

Cannot reset reloadable file manager

Error message

Cannot reset reloadable file manager

What it means

ReloadableFileManager.reset reinitializes the underlying reloadable StandardJavaFileManager between hot reloads (close + re-set CLASS_PATH). This error is thrown when those operations throw IOException, meaning the dev-mode compiler file manager could not be recycled for the next reload cycle.

Source

Thrown at core/deployment/src/main/java/io/quarkus/deployment/dev/filesystem/ReloadableFileManager.java:269

    @Override
    public boolean contains(Location location, FileObject fo) throws IOException {
        return super.contains(location, fo) || (this.reloadableFileManager != null
                && this.reloadableFileManager.contains(location, fo));
    }

    @Override
    public Iterable<? extends JavaFileObject> getJavaSources(Iterable<? extends File> files) {
        return this.fileManager.getJavaFileObjectsFromFiles(files);
    }

    @Override
    public void reset(Context context) {
        try {
            this.reloadableFileManager.close();
            this.reloadableFileManager.setLocation(StandardLocation.CLASS_PATH, context.getReloadableClassPath());
        } catch (IOException e) {
            throw new RuntimeException("Cannot reset reloadable file manager", e);
        }
        super.reset(context);
    }

    @Override
    public void close() throws IOException {
        this.reloadableFileManager.close();
        super.close();
    }

    /**
     * A class loader that combines multiple class loaders into one.<br>
     * The classes loaded by this class loader are associated with this class loader,
     * i.e. Class.getClassLoader() points to this class loader.
     */
    public static class JoinClassLoader extends ClassLoader {

        private final ClassLoader[] delegateClassLoaders;

View on GitHub (pinned to e1c734241f)

Solutions

  1. Restart dev mode after a ./mvnw clean to rebuild class path directories
  2. Stop IDE auto-build/'clean on save' while quarkus:dev is running (IntelliJ/Eclipse writing to same target dir)
  3. Check for file locks (antivirus, sync clients like Dropbox/OneDrive on the project dir)
  4. Upgrade Quarkus — several reloadable file manager reset bugs were patched

Example fix

// before: IDE auto-make triggering conflict
Settings > Compiler > Build project automatically = ON (with quarkus:dev)
// after: disable automatic build or use 'delegate to Maven' so only one process writes target/
Defensive patterns

Strategy: try-catch

Validate before calling

if (!Files.isDirectory(reloadableClassPath)) {
    throw new IllegalStateException("Reloadable class path missing: " + reloadableClassPath + " — restart dev mode after clean");
}

Try / catch

try {
    context.reset(); // triggers ReloadableFileManager.reset
} catch (RuntimeException e) {
    if (e.getMessage() != null && e.getMessage().contains("Cannot reset reloadable file manager")) {
        // restart dev mode; investigate locks on target/classes
    }
    throw e;
}

Prevention

When it happens

Trigger: Calling reset(Context) during a Quarkus live reload when reloadableFileManager.close() or setLocation(CLASS_PATH, reloadableClassPath) throws IOException.

Common situations: Reloadable class path directory removed/locked while app is running (clean by IDE during dev mode, AV scan); stale handles on Windows; corrupted target/classes after an interrupted build.

Related errors


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