--- old/src/java.base/share/classes/java/lang/reflect/Method.java 2016-06-11 14:21:09.516998679 -0700 +++ new/src/java.base/share/classes/java/lang/reflect/Method.java 2016-06-11 14:21:09.404998684 -0700 @@ -30,6 +30,8 @@ import jdk.internal.reflect.CallerSensitive; import jdk.internal.reflect.MethodAccessor; import jdk.internal.reflect.Reflection; +import sun.reflect.annotation.ExceptionProxy; +import sun.reflect.annotation.TypeNotPresentExceptionProxy; import sun.reflect.generics.repository.MethodRepository; import sun.reflect.generics.factory.CoreReflectionFactory; import sun.reflect.generics.factory.GenericsFactory; @@ -641,8 +643,13 @@ SharedSecrets.getJavaLangAccess(). getConstantPool(getDeclaringClass()), getDeclaringClass()); - if (result instanceof sun.reflect.annotation.ExceptionProxy) + if (result instanceof ExceptionProxy) { + if (result instanceof TypeNotPresentExceptionProxy) { + TypeNotPresentExceptionProxy proxy = (TypeNotPresentExceptionProxy)result; + throw new TypeNotPresentException(proxy.typeName(), proxy.getCause()); + } throw new AnnotationFormatError("Invalid default: " + this); + } return result; }