利用classloader动态加载jar包

原创 2015年11月18日 09:47:44
第一种方法:
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 ClassLoader加载.jar包中的Class

程序如下: [java] view plaincopy package yerasel;      import java.io.Buffere...

Java运行时动态加载类之ClassLoader加载class及其依赖jar包

需求场景是:通过ClassLoader动态加载外部class文件,class文件又依赖某个具体jar包,需要动态加载jar包,采用URLClassLoader。 1、xml配置文件 ...

Java 自定义 ClassLoader 实现隔离运行不同版本jar包的方式

1. 应用场景有时候我们需要在一个 Project 中运行多个不同版本的 jar 包,以应对不同集群的版本或其它的问题。如果这个时候选择在同一个项目中实现这样的功能,那么通常只能选择更低版本的 jar...

使用ClassLoader加载包内的资源

ClassLoader可以把包(jar包,war包)内的class文件加载到 JVM中,第一步就是将class文件以stream的方式读取出来。ClassLoader也将这个加载资源的方法 getRe...

通过URLClassLoader实现动态加载jar文件

Java代码   package t;      import java.net.URL;   import java.net.URLClassLoader;   import ja...

Java中动态加载jar文件和class文件

概述   诸如tomcat这样的服务器,在启动的时候会加载应用程序中lib目录下的jar文件以及classes目录下的class文件,另外像spring这类框架,也可以根据指定的路径扫描并加载指定的类...

运用URLClassLoader加载外部jar包的java类,生成Class文件

先来一段网上copy的话术:       //**************************** 很多时候 我们写的java程序是分模块的,有很好的扩展机制,即我们可以为我们自己的java类...

java动态加载指定的类或者jar包反射调用其方法

序言        有时候,项目中会用到java动态加载指定的类或者jar包反射调用其方法来达到模块的分离,使各个功能之间耦合性大大降低,更加的模块化,代码利用率更高。模式中的代理模式就用到ja...

java动态加载指定的类或者jar包反射调用其方法

序言        有时候,项目中会用到java动态加载指定的类或者jar包反射调用其方法来达到模块的分离,使各个功能之间耦合性大大降低,更加的模块化,代码利用率更高。模式中的代理模式就用到java的...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用classloader动态加载jar包
举报原因:
原因补充:

(最多只允许输入30个字)