JDK动态代理过程中报错interface ** is not visible from class loader
出现这种情况提示也比较明确 就是传入参数中的ClassLoader并没有找到 传入参数的类 附上报错的代码
public class JdkProxyUtil {public static<T> T getProxy(Class<T> clazz, final ICacheAdapter adapter) {System.out.println(clazz.getClass().getClassLoader()); //输出为null 这是BootStrapClassLoader加载的System.out.println(clazz.getClass().getName()); //输出java.lang.Classreturn (T)Proxy.newProxyInstance(clazz.getClass().getClassLoader(), new Class[]{clazz.getInterfaces()[0]}, new InvocationHandler() {public Object invoke(Object proxy, Method method, Object[] args) throws Throwable,RuntimeException {String name = method.getName();Class<?>[] parameterTypes = method.getParameterTypes();Method declaredMethod = adapter.getClass().getDeclaredMethod(name, parameterTypes);if (declaredMethod == null) {throw new RuntimeException("适配器中找不到适配的方法");}return declaredMethod.invoke(adapter, args);}});}
}
错误原因就是newProxyInstance方法中的第一个参数多了一个.getClass() 手快了 以为传进来的是一个相应的类的Object对象
这样获取的就是java.lang.Class的类加载器 也就是BootStrapClassLoader 而明显我们项目中的的class文件的加载器是AppClassLoader 所以BootStrapClassLoader不能获取到相应的接口的类 报错interface ** is not visible from class loader
JDK动态代理过程中报错interface ** is not visible from class loader相关推荐
- JDK 动态代理与 CGLIB 动态代理,它俩真的不一样
摘要:一文带你搞懂JDK 动态代理与 CGLIB 动态代理 本文分享自华为云社区<一文带你搞懂JDK 动态代理与 CGLIB 动态代理>,作者: Code皮皮虾 . 两者有何区别 1.Jd ...
- 23种设计模式——JDK动态代理(AOP)
文章目录 01 代理 1.1 什么是代理? 1.2 为什么要找中介 02 静态代理 2.1 使用代理模式的作用 2.2 实现代理的方式 2.3 具体实现 2.4 静态代理的优缺点 03 动态代理 3. ...
- Spring原理学习(七)JDK动态代理与CGLIB代理底层实现
AOP 底层实现方式之一是代理,由代理结合通知和目标,提供增强功能. 除此以外,aspectj 提供了两种另外的 AOP 底层实现: 第一种是通过 ajc 编译器在编译 class 类文件时,就把通知 ...
- Spring : Spring Aop JDK动态代理调用过程
1.美图 2.概述 JDK动态代理参考 : JDK动态代理 3.源码 打开JdkDynamicAopProxy类,查看invoke方法: /*** Implementation of {@code I ...
- 【干货】JDK动态代理的实现原理以及如何手写一个JDK动态代理
动态代理 代理模式是设计模式中非常重要的一种类型,而设计模式又是编程中非常重要的知识点,特别是在业务系统的重构中,更是有举足轻重的地位.代理模式从类型上来说,可以分为静态代理和动态代理两种类型. 在解 ...
- java jdk动态代理学习记录
转载自: https://www.jianshu.com/p/3616c70cb37b JDK自带的动态代理主要是指,实现了InvocationHandler接口的类,会继承一个invoke方法,通过 ...
- cglib动态代理和jdk动态代理的区别与应用
1,引入 如果从一个Controller调用Service的非事务方法a,然后在a里调用事务方法b,b事务生效吗? public void update() {updateActual();int a ...
- Jdk动态代理 底层源码分析
前言 java动态代理主要有2种,Jdk动态代理.Cglib动态代理,本文主要讲解Jdk动态代理的使用.运行机制.以及源码分析.当spring没有手动开启Cglib动态代理,即:<aop:asp ...
- AOP、ASPECT、Spring AOP、JDK动态代理、CGLib动态代理
AOP.ASPECT.Spring AOP.JDK动态代理.CGLib动态代理 1 AOP介绍 1.1 基本定义 AOP(Aspect Oriented Programming)称为面向切面编程,它是 ...
最新文章
- 软件工程项目组Z.XML会议记录 2013/09/18
- JS 事件冒泡和事件捕获
- 使用Maven管理Eclipse Java项目(多modules编译)
- Java线程的不同状态
- 小议SqlMapConfig.xml配置文件
- javascript 框架_克服JavaScript框架疲劳
- 前端学习(2239):小滴后台管理系统简介
- Oracle 一些常用函数
- 随笔 | 读《写给年轻程序员的思考书》ii
- 为伍兹乳腺X线摄影数据集开发神经网络
- Linux下dig命令使用
- 图解内存的工作原理及时序介绍
- 【有利可图网】PS实战教程55:打破次元壁,将照片从三次元跨越到二次元
- java人机猜拳模块流程图_基于java实现人机猜拳游戏
- Using setJavaScriptEnabled can Introduce XSS Vulnerabilities into
- 映像文件工具srec
- Linux版本Java卸载
- 股票自选股基本函数大全-7
- 宜信研发邮件POP3/SMTP测试
- Comware: Port Link-mode Bridge vs Port Link-mode Route