zoukankan      html  css  js  c++  java
  • Cglib学习报错 java.lang.reflect.InvocationTargetException-->null

    package javacore.testForCglibProxy;

     

    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 GetNewBook {

    public static void main(String[] args) {

     

    cglibProxy cp = new cglibProxy();

    gg gnb1 = (gg)cp.getProxy(new gg());

    gnb1.GetBook();

    }

    }

     

    class cglibProxy implements MethodInterceptor{

    Object target ;

    public Object getProxy(Object target){

    this.target=target;

    Enhancer ch = new Enhancer();

    ch.setSuperclass(this.target.getClass());

    ch.setCallback(this);

    return ch.create();

    }

     

    @Override

    public Object intercept(Object obj, Method method, Object[] args,

    MethodProxy proxy) throws Throwable {

    // TODO Auto-generated method stub

    System.out.println("开始");

    proxy.invokeSuper(obj, args);

    System.out.println("结束");

    return null;

     

    }

     

    }

     

    class gg{

    public void GetBook() {

    // TODO Auto-generated method stub

    System.out.println("get book");

    }

    }

     

    当Class  gg 的修饰符非public的时候 会报错 cannot access its superclass  

     

    Exception in thread "main" net.sf.cglib.core.CodeGenerationException: java.lang.reflect.InvocationTargetException-->null

    at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:237)

    at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377)

    at net.sf.cglib.proxy.Enhancer.create(Enhancer.java:285)

    at javacore.testForCglibProxy.cglibProxy.getProxy(GetNewBook.java:25)

    at javacore.testForCglibProxy.GetNewBook.main(GetNewBook.java:13)

    Caused by: java.lang.reflect.InvocationTargetException

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

    at java.lang.reflect.Method.invoke(Method.java:497)

    at net.sf.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:384)

    at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:219)

    ... 4 more

    Caused by: java.lang.IllegalAccessError: class $javacore.testForCglibProxy.gg1$$EnhancerByCGLIB$$bf75381d cannot access its superclass javacore.testForCglibProxy.gg1

    at java.lang.ClassLoader.defineClass1(Native Method)

    at java.lang.ClassLoader.defineClass(ClassLoader.java:760)

    ... 10 more

     

  • 相关阅读:
    141. Linked List Cycle【easy】
    237. Delete Node in a Linked List【easy】
    234. Palindrome Linked List【easy】
    排序_归并排序
    排序_选择排序
    排序_快速排序
    排序_冒泡排序
    排序_希尔排序
    排序_插入排序
    121. Best Time to Buy and Sell Stock【easy】
  • 原文地址:https://www.cnblogs.com/luoluoshidafu/p/5535716.html
Copyright © 2011-2022 走看看