"...within a static initializer of C or any class nested within C."
This is a bit ambiguous. It may seem like it could mean
"...within a static initializer of C, or within any class nested within C."
but what they meant here was
"...within a static initializer of C, or within a static initializer of any class nested within C."
You are not within any static initializer, and so this quote does not apply.
So why do you get a compile error? That comes from the sentence just before the one you quoted:
"It is a compile-time error to refer to a type parameter of a class C anywhere in the declaration of a static member of C or the declaration of a static member of any type declaration nested within C."
InnerClassStatic is a static member of class InnerClassCannotAccessTypeParameter, therefore it is a compile-time error to refer to type parameter T within InnerClassStatic.
By the way, since you're reading the JLS
you should not use the term "inner" to describe a static nested class. The two terms are completely incompatible. An static class is never inner - not using the JLS definition of "inner". Various other books incorrectly use "inner" as a synonym of "nested", but that's not how the JLS defined the term, and if you don't follow their definition while reading the JLS you will encounter other logical inconsistencies.