利用classloader动态加载jar包
2015-11-18 09:47
309 查看
第一种方法:
第二种方法:
-cp是同等效果,都能在当前运行环境中改变CLASSPATH,所以利用该方法加载jar包后,在程序任一地方都能加载该jar包中的类,调用其方法。
导入多个jar包时,第一种方法加载jar包中的类时,需知道加载该jar包的URLClassLoader,第二种方法则不需要,可使用Class.forName("类名");加载类
URL url= file.toURI().toURL();//将File类型转为URL类型,file为jar包路径 URLClassLoader urlClassLoader=new URLClassLoader(new URL[] {url}); Class c=urlClassLoader.loadClass("类名");此种方法是构造一个新的URLClassLoader对象,利用该对象加载指定路径下的jar包,此种方法只能在此处加载该jar包中的类,调用其方法,不能在程序中的其他地方调用。如果将urlClassLoader声明为静态的则可以在其它地方调用
第二种方法:
URL url= file.toURI().toURL();//将File类型转为URL类型,file为jar包路径 //得到系统类加载器 URLClassLoader urlClassLoader= (URLClassLoader) ClassLoader.getSystemClassLoader(); //因为URLClassLoader中的addURL方法的权限为protected所以只能采用反射的方法调用addURL方法 Method add = URLClassLoader.class.getDeclaredMethod("addURL", new Class[] { URL.class }); add.setAccessible(true); add.invoke(urlClassLoader, new Object[] {url }); Class c=Class.forName("类名"); 或者 Class c=urlClassLoader.loadClass("类名");此种方法是得到系统类加载器,利用该加载器加载指定路径下的jar包,此种方法与java命令中的javac
-cp是同等效果,都能在当前运行环境中改变CLASSPATH,所以利用该方法加载jar包后,在程序任一地方都能加载该jar包中的类,调用其方法。
导入多个jar包时,第一种方法加载jar包中的类时,需知道加载该jar包的URLClassLoader,第二种方法则不需要,可使用Class.forName("类名");加载类
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统