The whole "debate" about whether Java lambda expressions are "real closures" or not is a pretty unproductive one, because most participants are implicitly defining what "real closure" means in terms of what their favorite other language calls closures, and then turning around and saying "Language Y doesn't have 'real' closures."
Java lambda expressions close over values in the enclosing lexical scope, but not over variables.
Wikipedia says: "a closure is a record storing a function together with an environment, which is a mapping associating each free variable of the function (variables that are used locally, but defined in an enclosing scope) with the value or storage location to which the name was bound when the closure was created." (emphasis added).