什么是GeneratedMethodAccessor1,2,等等,为什么他们会不会被发现?(What

2019-07-29 02:31发布

我得到的堆栈跟踪是这样的:

java.lang.NoClassDefFoundError: sun/reflect/GeneratedMethodAccessor1
    at sun.reflect.GeneratedMethodAccessor1.<clinit>(Unknown Source)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at java.lang.Class.newInstance0(Class.java:355)
    at java.lang.Class.newInstance(Class.java:308)
    at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:381)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.reflect.MethodAccessorGenerator.generate(MethodAccessorGenerator.java:377)
    at sun.reflect.MethodAccessorGenerator.generateMethod(MethodAccessorGenerator.java:59)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:28)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at edu.tufts.cs.testsim.LogicalProcess.dispatchMessage(LogicalProcess.java:214)
    at edu.tufts.cs.testsim.LogicalProcess.processForward(LogicalProcess.java:287)
    at edu.tufts.cs.testsim.LogicalProcess.doOperation(LogicalProcess.java:423)
    at edu.tufts.cs.testsim.LogicalProcess.run(LogicalProcess.java:434)
    at java.lang.Thread.run(Thread.java:637)
Caused by: java.lang.ClassNotFoundException: sun.reflect.GeneratedMethodAccessor1
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:316)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:288)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374)
    ... 19 more

什么是GeneratedMethodAccessor1,GeneratedMethodAccessor2,GeneratedMethodAccessorN和什么可能导致他们不会被发现? 我做了一些字节代码在运行时重写,但加载的类只有之前,和前几个电话通过反射做工精细。 我想知道,如果发生这种情况,JIT编译器得到的我的代码保持后,但我甚至不有一个如何开始调试这是一个非常不错的主意。

Answer 1:

GeneratedMethodAccessor###是由反射实现在运行时产生的调用方法和构造类。 从这种形式的实例的字节代码桥MethodConstructor的实际方法或构造。 更多信息可在源代码可用。

Deserialisation也有类似的功能,共享一些相同的机制,调用最衍生的非Serializable构造函数。



文章来源: What are GeneratedMethodAccessor1,2,etc and why might they not be found?