2017-05-24 25 views
0

我试图使用库BTrace作为一个分析器。java.lang.NoClassDefFoundError:sun/reflect/GeneratedMethodAccessor

我BTrace配置很简单:

import com.sun.btrace.BTraceUtils; 
import com.sun.btrace.Profiler; 
import com.sun.btrace.annotations.BTrace; 
import com.sun.btrace.annotations.Duration; 
import com.sun.btrace.annotations.Kind; 
import com.sun.btrace.annotations.Location; 
import com.sun.btrace.annotations.OnMethod; 
import com.sun.btrace.annotations.OnTimer; 
import com.sun.btrace.annotations.ProbeMethodName; 
import com.sun.btrace.annotations.Property; 

@BTrace 
public class Logger 
{ 
    @Property 
    static Profiler profiler = BTraceUtils.Profiling.newProfiler(); 

    @OnMethod(clazz = "/.*/", method = "/.*/") 
    public static void entry(@ProbeMethodName(fqn = true) String probeMethod) 
    { 
     BTraceUtils.Profiling.recordEntry(profiler, probeMethod); 
    } 

    @OnMethod(clazz = "/.*/", method = "/.*/", location = @Location(value = Kind.RETURN)) 
    public static void exit(@ProbeMethodName(fqn = true) String probeMethod, @Duration long duration) 
    { 
     BTraceUtils.Profiling.recordExit(profiler, probeMethod, duration); 
    } 

    @OnTimer(300000) 
    public static void timer() 
    { 
     BTraceUtils.println("Logging Time: " + BTraceUtils.Time.millis() + " " + BTraceUtils.timestamp()); 
     BTraceUtils.Profiling.printSnapshot("Profiler Output:", profiler); 
    } 
} 

从本质上讲,这个问题出现的时候,我开始BTrace(我得到了一大堆警告/错误的,这只是其中的一个,因为他们都是相似的):

[17:41:37] [pool-8-thread-1/INFO]: btrace WARNING: java.lang.NoClassDefFoundError: sun/reflect/GeneratedMethodAccessor2 
[17:41:37] [pool-8-thread-1/INFO]: java.lang.NoClassDefFoundError: sun/reflect/GeneratedMethodAccessor2 
[17:41:37] [pool-8-thread-1/INFO]: at sun.reflect.GeneratedMethodAccessor2.<init>(Unknown Source) 
[17:41:37] [pool-8-thread-1/INFO]: at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
[17:41:37] [pool-8-thread-1/INFO]: at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
[17:41:37] [pool-8-thread-1/INFO]: at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
[17:41:37] [pool-8-thread-1/INFO]: at java.lang.reflect.Constructor.newInstance(Unknown Source) 
[17:41:37] [pool-8-thread-1/INFO]: at java.lang.Class.newInstance(Unknown Source) 
[17:41:37] [pool-8-thread-1/INFO]: at sun.reflect.MethodAccessorGenerator$1.run(Unknown Source) 
[17:41:37] [pool-8-thread-1/INFO]: at sun.reflect.MethodAccessorGenerator$1.run(Unknown Source) 
[17:41:37] [pool-8-thread-1/INFO]: at java.security.AccessController.doPrivileged(Native Method) 
[17:41:37] [pool-8-thread-1/INFO]: at sun.reflect.MethodAccessorGenerator.generate(Unknown Source) 
[17:41:37] [pool-8-thread-1/INFO]: at sun.reflect.MethodAccessorGenerator.generateMethod(Unknown Source) 
[17:41:37] [pool-8-thread-1/INFO]: at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
[17:41:37] [pool-8-thread-1/INFO]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
[17:41:37] [pool-8-thread-1/INFO]: at java.lang.reflect.Method.invoke(Unknown Source) 
[17:41:37] [pool-8-thread-1/INFO]: at com.sun.btrace.runtime.ClassInfo.isBootstrap(ClassInfo.java:316) 
[17:41:37] [pool-8-thread-1/INFO]: at com.sun.btrace.runtime.ClassInfo.inferClassLoader(ClassInfo.java:295) 
[17:41:37] [pool-8-thread-1/INFO]: at com.sun.btrace.runtime.ClassInfo.loadExternalClass(ClassInfo.java:272) 
[17:41:37] [pool-8-thread-1/INFO]: at com.sun.btrace.runtime.ClassInfo.<init>(ClassInfo.java:215) 
[17:41:37] [pool-8-thread-1/INFO]: at com.sun.btrace.runtime.ClassCache.get(ClassCache.java:71) 
[17:41:37] [pool-8-thread-1/INFO]: at com.sun.btrace.runtime.ClassInfo.loadExternalClass(ClassInfo.java:272) 
[17:41:37] [pool-8-thread-1/INFO]: at com.sun.btrace.runtime.ClassInfo.<init>(ClassInfo.java:215) 
[17:41:37] [pool-8-thread-1/INFO]: at com.sun.btrace.runtime.ClassCache.get(ClassCache.java:71) 
[17:41:37] [pool-8-thread-1/INFO]: at com.sun.btrace.runtime.ClassCache.get(ClassCache.java:63) 
[17:41:37] [pool-8-thread-1/INFO]: at com.sun.btrace.runtime.ClassCache.get(ClassCache.java:51) 
[17:41:37] [pool-8-thread-1/INFO]: at com.sun.btrace.agent.Client.retransformLoaded(Client.java:433) 
[17:41:37] [pool-8-thread-1/INFO]: at com.sun.btrace.agent.Main$3.run(Main.java:600) 
[17:41:37] [pool-8-thread-1/INFO]: at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
[17:41:37] [pool-8-thread-1/INFO]: at java.util.concurrent.FutureTask.run(Unknown Source) 
[17:41:37] [pool-8-thread-1/INFO]: at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
[17:41:37] [pool-8-thread-1/INFO]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
[17:41:37] [pool-8-thread-1/INFO]: at java.lang.Thread.run(Unknown Source) 

这最初似乎没有导致任何问题,但后来错误再次出现并崩溃了我正在分析的应用程序。

[17:43:04] [Server thread/ERROR]: Encountered an unexpected exception 
java.lang.NoClassDefFoundError: sun/reflect/GeneratedConstructorAccessor22 
    at sun.reflect.GeneratedConstructorAccessor22.newInstance(Unknown Source) ~[?:?] 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_77] 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.8.0_77] 
    at net.minecraft.server.v1_9_R2.EntityTypes.a(SourceFile:232) ~[spigot.jar:git-Spigot-798f32d-0cd0397] 
    at net.minecraft.server.v1_9_R2.ChunkRegionLoader.a(ChunkRegionLoader.java:459) ~[spigot.jar:git-Spigot-798f32d-0cd0397] 
    at net.minecraft.server.v1_9_R2.ChunkRegionLoader.a(ChunkRegionLoader.java:406) ~[spigot.jar:git-Spigot-798f32d-0cd0397] 
    at net.minecraft.server.v1_9_R2.ChunkRegionLoader.loadEntities(ChunkRegionLoader.java:360) ~[spigot.jar:git-Spigot-798f32d-0cd0397] 
    at org.bukkit.craftbukkit.v1_9_R2.chunkio.ChunkIOProvider.callStage2(ChunkIOProvider.java:42) ~[spigot.jar:git-Spigot-798f32d-0cd0397] 
    at org.bukkit.craftbukkit.v1_9_R2.chunkio.ChunkIOProvider.callStage2(ChunkIOProvider.java:1) ~[spigot.jar:git-Spigot-798f32d-0cd0397] 
    at org.bukkit.craftbukkit.v1_9_R2.util.AsynchronousExecutor$Task.finish(AsynchronousExecutor.java:188) ~[spigot.jar:git-Spigot-798f32d-0cd0397] 
    at org.bukkit.craftbukkit.v1_9_R2.util.AsynchronousExecutor.finishActive(AsynchronousExecutor.java:347) ~[spigot.jar:git-Spigot-798f32d-0cd0397] 
    at org.bukkit.craftbukkit.v1_9_R2.chunkio.ChunkIOExecutor.tick(ChunkIOExecutor.java:34) ~[spigot.jar:git-Spigot-798f32d-0cd0397] 
    at net.minecraft.server.v1_9_R2.MinecraftServer.D(MinecraftServer.java:745) ~[spigot.jar:git-Spigot-798f32d-0cd0397] 
    at net.minecraft.server.v1_9_R2.DedicatedServer.D(DedicatedServer.java:399) ~[spigot.jar:git-Spigot-798f32d-0cd0397] 
    at net.minecraft.server.v1_9_R2.MinecraftServer.C(MinecraftServer.java:665) ~[spigot.jar:git-Spigot-798f32d-0cd0397] 
    at net.minecraft.server.v1_9_R2.MinecraftServer.run(MinecraftServer.java:564) [spigot.jar:git-Spigot-798f32d-0cd0397] 
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_77] 
Caused by: java.lang.ClassNotFoundException: sun.reflect.GeneratedConstructorAccessor22 
    at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_77] 
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_77] 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) ~[?:1.8.0_77] 
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_77] 
    ... 17 more 
[17:43:04] [Server thread/ERROR]: Cause of unexpected exception was 
java.lang.ClassNotFoundException: sun.reflect.GeneratedConstructorAccessor22 
    at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_77] 
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_77] 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) ~[?:1.8.0_77] 
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_77] 
    at sun.reflect.GeneratedConstructorAccessor22.newInstance(Unknown Source) ~[?:?] 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_77] 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.8.0_77] 
    at net.minecraft.server.v1_9_R2.EntityTypes.a(SourceFile:232) ~[spigot.jar:git-Spigot-798f32d-0cd0397] 
    at net.minecraft.server.v1_9_R2.ChunkRegionLoader.a(ChunkRegionLoader.java:459) ~[spigot.jar:git-Spigot-798f32d-0cd0397] 
    at net.minecraft.server.v1_9_R2.ChunkRegionLoader.a(ChunkRegionLoader.java:406) ~[spigot.jar:git-Spigot-798f32d-0cd0397] 
    at net.minecraft.server.v1_9_R2.ChunkRegionLoader.loadEntities(ChunkRegionLoader.java:360) ~[spigot.jar:git-Spigot-798f32d-0cd0397] 
    at org.bukkit.craftbukkit.v1_9_R2.chunkio.ChunkIOProvider.callStage2(ChunkIOProvider.java:42) ~[spigot.jar:git-Spigot-798f32d-0cd0397] 
    at org.bukkit.craftbukkit.v1_9_R2.chunkio.ChunkIOProvider.callStage2(ChunkIOProvider.java:1) ~[spigot.jar:git-Spigot-798f32d-0cd0397] 
    at org.bukkit.craftbukkit.v1_9_R2.util.AsynchronousExecutor$Task.finish(AsynchronousExecutor.java:188) ~[spigot.jar:git-Spigot-798f32d-0cd0397] 
    at org.bukkit.craftbukkit.v1_9_R2.util.AsynchronousExecutor.finishActive(AsynchronousExecutor.java:347) ~[spigot.jar:git-Spigot-798f32d-0cd0397] 
    at org.bukkit.craftbukkit.v1_9_R2.chunkio.ChunkIOExecutor.tick(ChunkIOExecutor.java:34) ~[spigot.jar:git-Spigot-798f32d-0cd0397] 
    at net.minecraft.server.v1_9_R2.MinecraftServer.D(MinecraftServer.java:745) ~[spigot.jar:git-Spigot-798f32d-0cd0397] 
    at net.minecraft.server.v1_9_R2.DedicatedServer.D(DedicatedServer.java:399) ~[spigot.jar:git-Spigot-798f32d-0cd0397] 
    at net.minecraft.server.v1_9_R2.MinecraftServer.C(MinecraftServer.java:665) ~[spigot.jar:git-Spigot-798f32d-0cd0397] 
    at net.minecraft.server.v1_9_R2.MinecraftServer.run(MinecraftServer.java:564) [spigot.jar:git-Spigot-798f32d-0cd0397] 
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_77] 

我怀疑BTrace是问题,但我不确定。我不确定我是否真的了解这个问题,但是我得到的关于例外性质的唯一见解是:What are GeneratedMethodAccessor1,2,etc and why might they not be found?

但我仍然不明白原因是什么,或者我会如何解决它。我有一个想法是从BTrace中排除太阳和java方法,我试图通过改变我的注释来使用下面的正则表达式,但没有任何改变。

method = "/^(?!sun|java).*$/" 

任何洞察力或帮助将非常感激。提前致谢!

回答

1

看起来像你注释的方法,而不是类。

+0

哎呀,我做到了。让我检查它切换到课堂。 –

+0

就是这样。谢谢 –