当前位置:   article > 正文

引入外部jar包内的Class文件,通过反射去拿外部jar包内里面的一个类的内部类报错 ClassNotFoundException_jar打包后 classloader.loadclass classnotfoundexceptio

jar打包后 classloader.loadclass classnotfoundexception

起因:
我要调用一个第三方类的一个方法,传入一个要通过外部jar包导入的一个类的实例
这个类有内部类,在这个三方类的方法里面会用Class.forName去加载这个类的内部类,
但我一开始是在外面通过自定义类加载器(这个类加载器要传入URLClassLoader)去加载的外部jar包
所以,用自定义的类加载器.loadClass可以加载到外部类
但是,Class.forName使用的是AppClassLoader
两个类的类加载器不一样,自然是找不到其他类所加载的Class了

解决方法:
使用系统类加载器加载,和Class.forName所使用的类加载器一致即可

// 先将外部jar包使用系统类加载器加载进来
JarClassLoader.loadJar( 
(URLClassLoader) ClassLoader.getSystemClassLoader()
, new File(JarPath));
// 加载类
Class.forName(className);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/55855?site
推荐阅读
相关标签
  

闽ICP备14008679号