标题:cglib出现java.lang.NoClassDefFoundError求指教
取消只看楼主
郭俊森1234
Rank: 2
等 级:论坛游民
帖 子:5
专家分:10
注 册:2018-3-25
结帖率:0
已结贴  问题点数:20 回复次数:3 
cglib出现java.lang.NoClassDefFoundError求指教
被代理的类:
public class User {
    private int age;
    private String name;
    public User() {
    }
    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int age() {
        return age;
    }
    public String name() {
        return name;
    }
    public void run() {
        System.out.println("我的run方法执行了");
    }
    public void test() {
        System.out.println("我的test方法执行了");
    }
    public String toString() {
        return name + "=" + age;
    }
}
生成被代理类的子类作为代理类:
package CGLIB;

import java.lang.reflect.Method;

import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;

public class MyMethodInterceptor implements MethodInterceptor{
    public 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 arg0, Method arg1, Object[] arg2, MethodProxy arg3) throws Throwable {
        Object b = arg3.invokeSuper(arg1,arg2);
        return b;
    }
}
使用:
package CGLIB;

public class Main {
    public static void main(String[] args) {
        MyMethodInterceptor mmi = new MyMethodInterceptor();
        User user = (User)mmi.getInstance(new User());
        user.run();
    }
}
错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/objectweb/asm/Type
    at net.sf.cglib.core.TypeUtils.parseType(TypeUtils.java:184)
    at net.sf.cglib.core.KeyFactory.<clinit>(KeyFactory.java:66)
    at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:69)
    at CGLIB.MyMethodInterceptor.getInstance(MyMethodInterceptor.java:13)
    at CGLIB.Main.main(Main.java:6)
Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type
    at (Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 5 more

搜索更多相关主题的帖子: cglib java public age name 
2018-03-30 16:13
郭俊森1234
Rank: 2
等 级:论坛游民
帖 子:5
专家分:10
注 册:2018-3-25
得分:0 
我是从官网上面下载的应该不会出现类找不到,同时这个是用于测试的,只用了一个包不会出现架包冲突,这是什么原因导致的呢
2018-03-30 18:48
郭俊森1234
Rank: 2
等 级:论坛游民
帖 子:5
专家分:10
注 册:2018-3-25
得分:0 
通过尝试你那种修改方法不起作用。
2018-03-30 21:17
郭俊森1234
Rank: 2
等 级:论坛游民
帖 子:5
专家分:10
注 册:2018-3-25
得分:0 
不知道你能够将你使用的包发给我我看是不是包的原因,我qq2064253891
2018-03-31 19:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-485675-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019097 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved