diff -r 0be3f1820e8b -r 1b469fd31e35 src/share/classes/com/sun/tools/javac/jvm/ClassReader.java --- a/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java Wed Oct 09 13:06:49 2013 +0200 +++ b/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java Wed Oct 09 13:09:31 2013 +0200 @@ -1993,11 +1993,15 @@ (flags & ABSTRACT) == 0 && !name.equals(names.clinit)) { if (majorVersion > Target.JDK1_8.majorVersion || (majorVersion == Target.JDK1_8.majorVersion && minorVersion >= Target.JDK1_8.minorVersion)) { - currentOwner.flags_field |= DEFAULT; - flags |= DEFAULT | ABSTRACT; + if ((flags & STATIC) == 0) { + currentOwner.flags_field |= DEFAULT; + flags |= DEFAULT | ABSTRACT; + } } else { //protect against ill-formed classfiles - throw new CompletionFailure(currentOwner, "default method found in pre JDK 8 classfile"); + throw badClassFile((flags & STATIC) == 0 ? "invalid.default.interface" : "invalid.static.interface", + Integer.toString(majorVersion), + Integer.toString(minorVersion)); } } if (name == names.init && currentOwner.hasOuterInstance()) {