In the first example you have placed the label on a statement which is out of scope for the continue statement, so it can't find it. Continue is NOT the same as GOTO, it can only go within the statement construct that it is part of. There are no non-local jumps.
When you put the label on the for loop, the continue IN the for loop can now get at it.
From the JLS 14.7 Labeled Statements
The scope of a label declared by a labeled statement is the statement immediately enclosed by the labeled statement.
and
14.15 The continue Statement
A continue statement with label Identifier attempts to transfer control to the enclosing labeled statement (�14.7) that has the same Identifier as its label; that statement, which is called the continue target, then immediately ends the current iteration and begins a new one. The continue target must be a while, do, or for statement or a compile-time error occurs. A continue statement must refer to a label within the immediately enclosing method or initializer block. There are no non-local jumps.