onError:javax.servlet.http.HttpServletsun.misc.Launcher$AppClassLoader@18b4aac2
java.lang.AbstractMethodError: com.digital.cx.bsp.smonitor.agent.plugins.servlet.ServletInterceptor$$Lambda$3/1007603019.transform(Lnet/bytebuddy/dynamic/DynamicType$Builder;Lnet/bytebuddy/description/type/TypeDescription;Ljava/lang/ClassLoader;Lnet/bytebuddy/utility/JavaModule;)Lnet/bytebuddy/dynamic/DynamicType$Builder;
at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer.doTransform(AgentBuilder.java:10364)
at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer.transform(AgentBuilder.java:10302)
at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer.access$1600(AgentBuilder.java:10068)
at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer$LegacyVmDispatcher.run(AgentBuilder.java:10687)
at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer$LegacyVmDispatcher.run(AgentBuilder.java:10634)
at java.security.AccessController.doPrivileged(Native Method)
at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer.transform(AgentBuilder.java:10225)
at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
at java.lang.ClassLoader.defineClass1(Native Method)
按照API文档的解释,主要原因是运行时的类与编译时用的类不一致导致。这里讲的不一致可以是jdk版本,也可以是类声明、方法声明等不一致。通常是使用了不同版本导致的冲突。如javaagent用的bytebuddy与应用系统中用到的bytebuddy版本不同。
解决方法:javaagent打包的时候,重写bytebuddy的路径