2009-06-21 5 views
8

나는이 같은 스택 추적을 받고 있어요 :GeneratedMethodAccessor1,2 등은 무엇이며 왜 찾을 수 없습니까?

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 컴파일러가 내 코드를 저장 한 후에 이런 일이 발생하는지 궁금 해서요.하지만 디버깅을 시작하는 방법에 대한 아이디어는 없습니다.

답변

7

은 리플렉션 구현에서 런타임에 생성되는 클래스로, 메소드 및 생성자를 호출합니다. 이것은 Method 또는 Constructor의 인스턴스에서 실제 메소드 또는 생성자로 바이트 코드 브릿지를 형성합니다. 자세한 내용은 소스 코드에서 확인할 수 있습니다.

디시리얼라이제이션도 비슷한 방식으로, 동일한 메커니즘을 공유하여 가장 파생되지 않은 Serializable 생성자를 호출합니다.