赞
踩
起因:
我要调用一个第三方类的一个方法,传入一个要通过外部jar包导入的一个类的实例
这个类有内部类,在这个三方类的方法里面会用Class.forName去加载这个类的内部类,
但我一开始是在外面通过自定义类加载器(这个类加载器要传入URLClassLoader)去加载的外部jar包
所以,用自定义的类加载器.loadClass可以加载到外部类
但是,Class.forName使用的是AppClassLoader
两个类的类加载器不一样,自然是找不到其他类所加载的Class了
解决方法:
使用系统类加载器加载,和Class.forName所使用的类加载器一致即可
// 先将外部jar包使用系统类加载器加载进来
JarClassLoader.loadJar(
(URLClassLoader) ClassLoader.getSystemClassLoader()
, new File(JarPath));
// 加载类
Class.forName(className);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。