字节好友拦截kafkaproducer.send()引发以下异常:
[Byte Buddy] ERROR org.apache.kafka.clients.producer.KafkaProducer [null, null, Thread[main,5,main], loaded=false]
java.lang.IllegalStateException: Cannot resolve type description for org.apache.kafka.clients.producer.Producer
at net.bytebuddy.pool.TypePool$Resolution$Illegal.resolve(TypePool.java:159)
at net.bytebuddy.pool.TypePool$Default$WithLazyResolution$LazyTypeDescription.delegate(TypePool.java:973)
at net.bytebuddy.description.type.TypeDescription$AbstractBase$OfSimpleType$WithDelegation.getEnclosingType(TypeDescription.java:8360)
at net.bytebuddy.pool.TypePool$Default$LazyTypeDescription$GenericTypeToken$ForParameterizedType$LazyParameterizedType.getOwnerType(TypePool.java:5222)
at net.bytebuddy.description.type.TypeDescription$Generic$Visitor$Substitutor.onParameterizedType(TypeDescription.java:1857)
at net.bytebuddy.description.type.TypeDescription$Generic$Visitor$Substitutor$ForDetachment.onParameterizedType(TypeDescription.java:2032)
at net.bytebuddy.description.type.TypeDescription$Generic$OfParameterizedType.accept(TypeDescription.java:5168)
at net.bytebuddy.description.type.TypeDescription$Generic$LazyProjection.accept(TypeDescription.java:6320)
at net.bytebuddy.description.type.TypeList$Generic$AbstractBase.accept(TypeList.java:291)
at net.bytebuddy.dynamic.scaffold.InstrumentedType$Factory$Default$1.represent(InstrumentedType.java:414)
at net.bytebuddy.ByteBuddy.rebase(ByteBuddy.java:888)
at net.bytebuddy.agent.builder.AgentBuilder$TypeStrategy$Default$1.builder(AgentBuilder.java:2526)
at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer.doTransform(AgentBuilder.java:11116)
at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer.transform(AgentBuilder.java:11063)
at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer.access$1600(AgentBuilder.java:10805)
at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer$LegacyVmDispatcher.run(AgentBuilder.java:11455)
at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer$LegacyVmDispatcher.run(AgentBuilder.java:11402)
at java.security.AccessController.doPrivileged(Native Method)
at net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer.transform(AgentBuilder.java:10970)
at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
at java.lang.ClassLoader.findBootstrapClass(Native Method)
at java.lang.ClassLoader.findBootstrapClassOrNull(ClassLoader.java:1008)
at java.lang.ClassLoader.loadClass(ClassLoader.java:407)
at java.lang.ClassLoader.loadClass(ClassLoader.java:405)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
这是我的代理premain方法:
public static void premain(String agentArgs, Instrumentation inst) {
try {
final File bootstrapFolder;
try {
bootstrapFolder = Files.createTempDirectory("agent-bootstrap").toFile();
} catch (Exception e) {
e.printStackTrace(System.err);
return;
}
new AgentBuilder.Default()
.ignore(nameStartsWith("sun."))
.with(AgentBuilder.Listener.StreamWriting.toSystemOut())
.with(new AgentBuilder.InitializationStrategy.SelfInjection.Eager())
.with((AgentBuilder.LocationStrategy) (classLoader, module) -> new ClassFileLocator.Compound(
ClassFileLocator.ForClassLoader.of(classLoader),
ClassFileLocator.ForClassLoader.ofBootLoader()))
.with(new AgentBuilder.InjectionStrategy.UsingInstrumentation(inst, bootstrapFolder))
.type(named("org.apache.kafka.clients.producer.KafkaProducer"))
.transform((builder, typeDescription, classLoader, module) -> {
return builder
.method(named("send").and(takesArguments(1)))
.intercept(Advice.to(KafkaProducerInterceptor.class));
}
)
.installOn(inst);
} catch (Exception e) {
e.printStackTrace();
}
}
暂无答案!
目前还没有任何答案,快来回答吧!