Java的动态加载包

转载 2005年05月21日 13:01:00

在插件化的道路上,我们最为需要的技术就是动态加载,在c#中这点是非常容易实现的,而在java中也早在jdk1.2中就提到了解决方法:

一般来说有重写classloader的方式,但在java.net包中提供了URLClassLoader类,这个类非常有用。非常适合于动态加载。实例如下:

File file = new File(jar文件全路径);
URL url = file.toURL();
URLClassLoader loader = new URLClassLoader(new URL[] { url });
Class tidyClazz = loader.loadClass(所需class的含包名的全名);

在插件的构造过程中,我们需要不停的加载各种包,如果每次都重新构建URLClassLoader,会大量的消耗系统资源和IO,并且这些操作会有大量的重复,所以,解决的方案是将构建好的URLClassLoader变为Threa.currentThread().setContextClassLoader(),根据classLoader的工作模式,这个classLoader同时含有前后两个classLoader的能力,但是我们必须自己记录加载了那些包,而且内存中的对象会大大增加,每加载一个插件都会增加一次,为了解决这个问题,我们必须自己重写classLoader。

java动态加载指定的类或者jar包反射调用其方法-涉及其他jar中的类就报ClassNotFound问题分析及解决思路

在这篇博文中java动态加载指定的类或者jar包反射调用其方法,介绍动态加载指定的类,当时我是拿URLClassLoader介绍的,当然可以自定义一个ClassLoader重新对应的方法, 不过这个有...

java动态加载jar包,并运行其中的类和方法

动态加载jar包,在实际开发中经常会需要用到,尤其涉及平台和业务的关系的时候,业务逻辑部分可以独立出去交给业务方管理,业务方只需要提供jar包,就能在平台上运行。 下面通过一个实例来直观演示: ...

Android 安全——Java环境动态加载Jar之Jar包的加密和解密

编写测试Jar包1.类结构2.类代码Parent.classpackage com.wind.test;abstract class Parent { public String name()...

实现java classloader 动态加载jar包

业务描述 : 有两个jar包mylib.jar,mylib2.jar , 其中mylib.jar依赖mylib2.jar     我在eclipse的classpath上不加载这两个jar包     ...
  • AS_JOPO
  • AS_JOPO
  • 2015年12月29日 12:31
  • 419

java程序执行过程中动态加载jar包

最近做一个远程接口测试系统,遇到了动态加载jar包的问题,如将用户上传的jar包动态加载后调用远程接口的方法,特将例子记录下来以便查找。...
  • baokx
  • baokx
  • 2015年09月16日 18:27
  • 1317

JAVA动态加载JAR包

动态加载jar包,在实际开发中经常会需要用到,尤其涉及平台和业务的关系的时候,业务逻辑部分可以独立出去交给业务方管理,业务方只需要提供jar包,就能在平台上运行。 下面通过一个实例来直观演示: 第...

java程序中动态加载jar包并执行

参考了几篇文章 http://www.cnblogs.com/flyingzl/articles/3139028.html 这个写的比较简单些, 加载jar包的类URLClassLoader中使用的...

java动态加载jar包,并运行其中的类和方法

http://blog.csdn.net/wawmg/article/details/17961815 动态加载jar包,在实际开发中经常会需要用到,尤其涉及平台和业务的关系的时候,业务逻辑...

JAVA实现动态加载jar包并调用其中的方法

一、首先我们编写一个需要达成jar包的类,daim
  • syystx
  • syystx
  • 2014年11月16日 10:16
  • 395

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

序言        有时候,项目中会用到java动态加载指定的类或者jar包反射调用其方法来达到模块的分离,使各个功能之间耦合性大大降低,更加的模块化,代码利用率更高。模式中的代理模式就用到ja...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java的动态加载包
举报原因:
原因补充:

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