--- old/src/share/vm/classfile/classFileParser.cpp 2011-03-02 14:04:21.339263000 -0500 +++ new/src/share/vm/classfile/classFileParser.cpp 2011-03-02 14:04:19.028532000 -0500 @@ -1615,9 +1615,11 @@ Symbol* signature = cp->symbol_at(signature_index); AccessFlags access_flags; - if (name == vmSymbols::class_initializer_name()) { - // We ignore the access flags for a class initializer. (JVM Spec. p. 116) - flags = JVM_ACC_STATIC; + if (name == vmSymbols::class_initializer_name() && + (flags & JVM_ACC_STATIC) == JVM_ACC_STATIC) { + // We ignore the other access flags for a valid class initializer. + // (JVM Spec 2nd ed., chapter 4.6) + flags &= JVM_ACC_STATIC | JVM_ACC_STRICT; } else { verify_legal_method_modifiers(flags, is_interface, name, CHECK_(nullHandle)); }