2009-06-21 30 views
8

Tôi nhận được đống dấu vết như thế này:GeneratedMethodAccessor1,2, vv và tại sao chúng không tìm thấy?

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 

gì đang GeneratedMethodAccessor1, GeneratedMethodAccessor2, GeneratedMethodAccessorN và những gì có thể khiến chúng không thể được tìm thấy? Tôi đang làm một số mã byte viết lại tại thời gian chạy, nhưng chỉ trước khi lớp được nạp, và một số cuộc gọi đầu tiên thông qua công việc phản ánh tốt. Tôi tự hỏi nếu điều này xảy ra sau khi trình biên dịch JIT được giữ mã của tôi, nhưng tôi thậm chí không có một ý tưởng rất tốt về cách bắt đầu gỡ lỗi này.

Trả lời

7

GeneratedMethodAccessor### là các lớp được tạo trong thời gian chạy bằng cách thực hiện phản chiếu để gọi phương thức và hàm tạo. Biểu mẫu này là cầu nối bytecode từ các trường hợp của Method hoặc Constructor đối với phương thức hoặc hàm tạo thực tế. Thông tin thêm có sẵn trong mã nguồn.

Deserialisation cũng thực hiện điều gì đó tương tự, chia sẻ một số cơ chế tương tự, để gọi hàm tạo non-Serializable có nguồn gốc cao nhất.

Các vấn đề liên quan