账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    运行书上的代码,报错提示如下。
    43
    0

    已导入jar包,asm-3.3.1,cglib-2.2,但不知为什么还是报错。

    Exception in thread "main" java.lang.NoClassDefFoundError: org/objectweb/asm/Type

    at net.sf.cglib.core.TypeUtils.parseType(TypeUtils.java:180)
    at net.sf.cglib.core.KeyFactory.<clinit>(KeyFactory.java:66)
    at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:69)
    at javacore.proxy.cglib.CglibProxyExample.getProxy(CglibProxyExample.java:20)
    at javacore.proxy.cglib.CglibProxyExample.testCGLBProxy(CglibProxyExample.java:39)
    at javacore.proxy.cglib.CglibProxyExample.main(CglibProxyExample.java:44)

    Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type

    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 6 more
    
    package javacore.proxy.cglib;
    
    import javacore.reflection.ReflectServiceImpl;
    import net.sf.cglib.proxy.Enhancer;
    import net.sf.cglib.proxy.MethodInterceptor;
    import net.sf.cglib.proxy.MethodProxy;
    
    
    ----------
    源代码如下
    
    import java.lang.reflect.Method;
    
    public class CglibProxyExample implements MethodInterceptor {
        /**
         * 生成cglib代理对象
         *
         * @param cls
         * @return Class类的cglib代理对象
         */
        public Object getProxy(Class cls) {
            //cglib的enhancer增强类对象
            Enhancer enhancer = new Enhancer();
            //设置增强类型
            enhancer.setSuperclass(cls);
            //定义代理逻辑对象为当前对象,要求当前对象实现MethodInterceptor方法
            enhancer.setCallback(this);
            return enhancer.create();
        }
    
        @Override
        public Object intercept(Object proxy, Method method, Object[] args,
                                MethodProxy methodProxy) throws Throwable {
            System.err.println("调用真实对象前");
            Object result = methodProxy.invokeSuper(proxy, args);
            System.err.println("调用真实对象后");
            return result;
        }
    
        public void testCGLBProxy() {
            CglibProxyExample cpe = new CglibProxyExample();
            ReflectServiceImpl obj = (ReflectServiceImpl) cpe.getProxy(ReflectServiceImpl.class);
            obj.sayHello("oaoa");
        }
    
        public static void main(String[] args) {
            new CglibProxyExample().testCGLBProxy();
        }
    }
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • ★等待爱情♂ 普通会员 1楼

      很抱歉,您没有提供具体的错误信息。能否详细描述一下您在运行书上代码时遇到的错误提示?这样我才能更准确地帮助您解决问题。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部