java.lang.NoClassDefFoundError: солнце / отражение /GeneratedMethodAccessor
Я пытаюсь использовать библиотеку BTrace в качестве профилировщика.
Моя конфигурация 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, но я не уверен. Я не уверен, что я действительно понимаю проблему, единственное понимание, которое я получил о природе исключения, было от: Что такое GeneratedMethodAccessor1,2 и т. Д., И почему они могут не быть найдены?
Но я до сих пор не понимаю, в чем причина или как я могу это исправить. Единственная идея, которая у меня была, заключалась в том, чтобы исключить методы sun и java из BTrace, которые я пытался сделать, изменив свои аннотации на использование следующего регулярного выражения, но ничего не изменилось.
method = "/^(?!sun|java).*$/"
Любое понимание или помощь будут очень цениться. Заранее спасибо!