hi, I just ran into the same thing. But I have managed to solve it eventually..
The problem is, that hiddenValue is not a public field, so the MyApp.java should call getDeclaredField instead of getField.
And the fact that javap doesn't see it, is because it reads the String.class from the rt.jar.
If you call
javap -bootclasspath <path.to.new.string> java.lang.Stringthen you will see the 'hiddenValue' field