Byte buddy ByteBuddy:设置拦截器时AbstractMethodError

Byte buddy ByteBuddy:设置拦截器时AbstractMethodError,byte-buddy,Byte Buddy,以下是我的学习代码,当我执行代码时,发生了异常: 线程“main”中出现异常 java.lang.AbstractMethodError:org.learning.UserRepository$ByteBuddy$etz0xUhc.$$\u pharos\u set\u拦截器(Lorg/learning/interceptor;)V** ByteBuddy版本:1.10.14 final-TypeCache.SimpleKey cacheKey=getCacheKey(learningClaz

以下是我的学习代码,当我执行代码时,发生了异常:

线程“main”中出现异常 java.lang.AbstractMethodError:org.learning.UserRepository$ByteBuddy$etz0xUhc.$$\u pharos\u set\u拦截器(Lorg/learning/interceptor;)V** ByteBuddy版本:1.10.14

final-TypeCache.SimpleKey cacheKey=getCacheKey(learningClazz,interceptor.getClass());
Class proxyClass=load(learningClazz、proxyCache、cacheKey、byteBuddy->
拜特巴迪
.子类(learningClazz)
.defineField(ProxyConfiguration.INTERCEPTOR\字段\名称、INTERCEPTOR.class、Visibility.PRIVATE)
.method(而不是(isDeclaredBy(Object.class)))
.intercept(MethodDelegation.to(ProxyConfiguration.InterceptorDispatcher.class))
.implement(ProxyConfiguration.class)
.intercept(FieldAccessor.ofField(ProxyConfiguration.INTERCEPTOR\u FIELD\u NAME)
.withAssigner(Assigner.DEFAULT,Assigner.Typing.DYNAMIC));
最终ProxyConfiguration代理=(ProxyConfiguration)proxyClass.getDeclaredConstructor().newInstance();
代理$$\u pharos\u set\u拦截器(拦截器);
返回(T)代理;
公共接口代理配置{
字符串拦截器\u字段\u名称=“$$\u pharos\u拦截器”;
void$$\u pharos\u set\u拦截器(拦截器拦截器);
类截取器{
@运行时类型
公共静态对象截获(
@最后一个对象实例,
@原始最终方法,
@AllArguments最终对象[]参数,
@存根值最终对象存根值,
@FieldValue(拦截器\字段\名称)拦截器拦截器,
@超级方法超级方法
)扔掉的
{
if(拦截器==null){
返回值;
}
否则{
返回interceptor.intercept(实例、方法、参数、超级方法);
}
}
}
}

包私有方法被重写,但如果子类加载到不同的类加载器上,JVM将不会动态地分派它们。如果您将该方法声明为public,则问题应该得到解决。或者,将类注入目标类装入器。

完全正确!将方法声明为公共后,问题已修复。