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).*$/"
任何洞察力或帮助将非常感激。提前致谢!
哎呀,我做到了。让我检查它切换到课堂。 –
就是这样。谢谢 –