Known issue, Mandy has a fix in progress [1]. -Chris.
[1] http://mail.openjdk.java.net/pipermail/jdk7u-dev/2013-June/006791.html On 06/25/2013 11:06 AM, Peter Levart wrote:
Hi Mandy, I noticed the @CallerSensitive annotation and machinery behind it has been back-ported to JDK7. That was when one of my apps using sun.reflect.Reflection.getCallerClass(int) failed. The native method taking "int" was deprecated, but it also changed the behavior. If I run the following program: import sun.reflect.Reflection; public class GetCallerClassTest { static class Tester { static void test(int frames) { System.out.println(frames + ": " + Reflection.getCallerClass(frames)); } } public static void main(String[] args) { Tester.test(0); Tester.test(1); Tester.test(2); Tester.test(3); } } with JDK7u21, I get the following output: 0: class sun.reflect.Reflection 1: class GetCallerClassTest$Tester 2: class GetCallerClassTest 3: null with JDK7u25, I get the following output: 0: class sun.reflect.Reflection 1: class sun.reflect.Reflection 2: class GetCallerClassTest$Tester 3: class GetCallerClassTest It seems that with 7u25 the result is "shifted" for one calling frame. Is that behavior change intentional to encourage people to "get off that wagon"? Regards, Peter