- Run while adding new referenced class. -- Running sayHi before redefinition Hello from TestClass sayHi function Goodbye from TestClass! -- Adding NewClass to classloader! -- Redefine the TestClass -- call TestClass again, now with NewClass refs Hello again from TestClass sayHi function Hello from NewClass sayHi function Nearby stack: private static native art.StackTrace$StackFrameData[] art.StackTrace.nativeGetStackTrace(java.lang.Thread)(line: -1) public static art.StackTrace$StackFrameData[] art.StackTrace.GetStackTrace(java.lang.Thread)(line: 61) static void foobar.NewClass.sayHi() throws java.lang.Exception(line: 27) public static void foobar.TestClass.sayHi()(line: 5) - Run without adding new referenced class. -- Running sayHi before redefinition Hello from TestClass sayHi function Goodbye from TestClass! -- Redefine the TestClass -- call TestClass again, now with NewClass refs Hello again from TestClass sayHi function -- Exception caught when running test without new class added! java.lang.NoClassDefFoundError --- java.lang.NoClassDefFoundError At foobar.TestClass.sayHi(TestClass.java:5)