CGLib动态代理测试不通过-Unable to load cache item?

发布于 2022-09-04 09:08:17 字数 1499 浏览 22 评论 0

基础类

public class HelloWorld{
 
    public void sayHello(String name) {
        System.err.println(name+":Hello World~");
    }
 
}

代理类

public class Proxy_CGLib implements MethodInterceptor{
 
    private Object target;
     
    public Object getInstance(Object target){
        this.target=target;
        Enhancer enhancer =new Enhancer();
        enhancer.setSuperclass(this.target.getClass());
        enhancer.setCallback(this);
        return enhancer.create();
    }
    @Override
    //回调方法
    public Object intercept(Object obj, Method method, Object[] args,
            MethodProxy methodProxy) throws Throwable {
        Object returnObj = methodProxy.invokeSuper(obj, args);
        return returnObj;
    }
 
}

测试

public class CGLibTest {
    public static void main(String[] args) {
        Proxy_CGLib cglib=new Proxy_CGLib();
        HelloWorld helloService =(HelloWorld) cglib.getInstance(new HelloWorld());
        helloService.sayHello("yw");
    }
}

报错信息

Exception in thread "main" java.lang.ExceptionInInitializerError

at com.yan.cglib.Proxy_CGLib.getInstance(Proxy_CGLib.java:15)
at com.yan.cglib.CGLibTest.main(CGLibTest.java:6)

Caused by: java.lang.IllegalStateException: Unable to load cache item

使用jar包

cglib-3.2.4.jar
asm-3.3.1.jar

各位大神,请问问题出在哪?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

趁微风不噪 2022-09-11 09:08:17

遇到了同样的问题。通过修改cglib的jar包版本为2.2.2解决。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文