Compile Error: Not AutoCloseable in Try-with-Resources

error: incompatible types: MyClass cannot be converted to AutoCloseable

Quick Answer

The class used in try-with-resources does not implement AutoCloseable. Implement the interface or close the resource manually.

Why This Happens

Try-with-resources requires that the resource implements java.lang.AutoCloseable (or java.io.Closeable). If your class manages resources that need cleanup, implement AutoCloseable and provide a close() method.

The Problem

class DatabaseHelper {
    public void disconnect() { /* cleanup */ }
}
try (DatabaseHelper db = new DatabaseHelper()) { // Error
}

The Fix

class DatabaseHelper implements AutoCloseable {
    @Override
    public void close() { disconnect(); }
    public void disconnect() { /* cleanup */ }
}
try (DatabaseHelper db = new DatabaseHelper()) { // Works
}

Step-by-Step Fix

  1. 1

    Identify the non-closeable class

    Read the error to find which class does not implement AutoCloseable.

  2. 2

    Check if the class should be closeable

    Determine if the class manages resources (connections, files, locks) that need cleanup.

  3. 3

    Implement AutoCloseable

    Add implements AutoCloseable and a close() method, or use try-finally instead of try-with-resources.

Bugsly catches this automatically

Bugsly's AI analyzes this error pattern in real-time, explains what went wrong in plain English, and suggests the exact fix — before your users even report it.

Try Bugsly free