ما هي GeneratedMethodAccessor1،2، وغيرها، والسبب قد لا يمكن العثور عليها؟
-
06-07-2019 - |
سؤال
وأنا الحصول على كومة يتتبع مثل هذا:
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 على عقد من قانون بلدي، ولكن أنا حتى لا يكون لديك فكرة جيدة جدا لكيفية بدء التصحيح هذه.
المحلول
وGeneratedMethodAccessor###
هي الطبقات ولدت في وقت التشغيل عن طريق تنفيذ انعكاس للاتصال أساليب والصانعين. هذا النموذج جسر بايت كود من حالات Method
أو Constructor
إلى الطريقة الفعلية أو منشئ. يتوفر مزيد من المعلومات في شفرة المصدر.
وDeserialisation أيضا لا شيئا من هذا القبيل، وتقاسم بعض من نفس الآلية، لاستدعاء أكثر المستمدة منشئ غير Serializable
.