在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ 運行書上的代碼,報錯提示如下。

運行書上的代碼,報錯提示如下。

已導(dǎo)入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();
        //設(shè)置增強類型
        enhancer.setSuperclass(cls);
        //定義代理邏輯對象為當(dāng)前對象,要求當(dāng)前對象實現(xiàn)MethodInterceptor方法
        enhancer.setCallback(this);
        return enhancer.create();
    }

    @Override
    public Object intercept(Object proxy, Method method, Object[] args,
                            MethodProxy methodProxy) throws Throwable {
        System.err.println("調(diào)用真實對象前");
        Object result = methodProxy.invokeSuper(proxy, args);
        System.err.println("調(diào)用真實對象后");
        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();
    }
}
回答
編輯回答
葬愛

以我的經(jīng)驗,一般情況下,首先檢查包是不是真的被引入了,看下target/目錄下面的編譯文件,如果是maven,請使用命令mvn clean,然后再運行。另外看看該包是不是真的包含缺失的類。

2017年6月18日 03:51