The link in the comment by @McDowell reveals the correct answer in a blog post comment by Joe Darcy who led the Java Technology Specification that introduced the try-with-resources statement:
Back in JDK 7, we started with a try-with-resources construct like
that allowed a general expression to be used for the resource,
including a method call. However, the expert group found by the early
draft review
(http://jcp.org/aboutJava/communityprocess/edr/jsr334/index.html) that“A possible future change [to the try-with-resources statemenbt] is
dropping support for a resource to be specified as a general
Expression. Nontrivial specification and implementation complexities
arise from allowing a general Expression to be used as resource. A
restricted expression that could be an identifier or a
PrimaryNoNewArray may suffice. Even the more severe restriction of
just allowing an identifier may provide nearly all the additional
utility of allowing a full expression (over forcing the declaration of
a new resource variable) at a much lower marginal implementation and
specification impact.”By the end of JDK 7, what we wanted was a fresh variable declaration
for the resource or an existing final / effectively final variable. We
only had time to provide the former in 7; in 9, we are providing the
latter too.