Taken from the Java Language Spec (14.20.3):
A try-with-resources statement is parameterized with variables (known as resources) that are initialized before execution of the try block and closed automatically, in the reverse order from which they were initialized, after execution of the try block. catch clauses and a finally clause are often unnecessary when resources are closed automatically.
A ResourceSpecification declares one or more local variables with initializer expressions to act as resources for the try statement.
So you do not need to close the Resource anymore. Try-with-resources does it automatically for you and your FileReader
will only be available in the try
block. Thus you get that compile error.