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
最新文章
- 夯实基础之php学习-2提高篇
- TemplateDataField
- 误删ibdata1文件恢复方法
- C#手动做一个负载均衡服务器
- table.appand(行数据) datagrid分页
- [ZZ] Maxwell 架构
- 支持状态对象复用的RPC框架——SnakeRPC
- VisualSVN Server 从此告别SVN记事本配置
- linux —— shell 编程(编程语法)
- .NET基础拾遗(7)多线程开发基础2
- Git 多人协作的工作模式
- 微软发布Win10开发者指南视频
- 【顶】在node环境下玩转less
- PSAM 卡的应用 操作方法
- Nowcoder 牛客练习赛23
- k8s系列~mgr的应用
- Codeforces 679C Bear and Square Grid
- 移除list中null元素
- NgDL:【第二周】NN基础
- Git 命令简单罗列