如何通过ClassLoader动态加载类?(急急急急急急急急) 看看我的blog有兩篇文章,希望對你有幫助.http://blog.csdn.net/llp1217 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 关于动态编程,ibm developerworks上有一篇不错的文章,分五部分,楼主可以看看:http://www-900.ibm.com/developerWorks/cn/java/j-dyn0429/index.shtmlhttp://www-900.ibm.com/developerWorks/cn/java/j-dyn0603/index.shtmlhttp://www-900.ibm.com/developerWorks/cn/java/j-dyn0715/index.shtmlhttp://www-900.ibm.com/developerWorks/cn/java/j-dyn0916/index.shtmlhttp://www-900.ibm.com/developerWorks/cn/java/j-dyn0203/index.shtml 一个ClassLoader(以下称类加载器) 是一个对象,它负责加载类。ClassLoader类是一个Abstract 类。如果给了一个类的名字,那么类加载器将会去加载和生成有关构成这个类的定义的数据。典型的策略是将这个类名转换成一个文件名,然后从文件系统中读取这个类文件名。每个类对象都有一个对其自身类进行定义的类加载器的引用(reference)多个数组类的类对象不能由类加载器创建,但它们可以根据需要,由java 运行时(runtime)自动创建。针对一个数组类通过Class.getClassLoader()来返回它的类加载器,这个过程和与返回数组里面的元素的类加载器的过程是一样的。但是,如果数组的元素是基本类型(primitive type)的,那么这个数组就没有类加载器。应用程序为了能具有扩展(extend)JVM动态加载类的能力,它需要实现(implement)类加载器的子类。类加载器的典型使用是由安全管理者来指定安全域。一个ClassLoader 类,使用委托(delegation model)模型来查找类和资源。每个ClassLoader 类的实例都有一个向上一级的(父亲)类加载器)的联接。当需要查找类或资源的时候,一个ClassLoader 实例在亲自查找这些资源之前,先将查找任务委托给它的父加载器。在类加载器内部构建虚拟机的类加载器,称为“bootstrap 类加载器”,它本身没有父加载器,但它却可以充当一个ClassLoader 实例的父亲。通常由JVM从一个由(操作系统)平台支撑的本地文件系统中加载类对象。例如:在 Unix 系统中,文件的路径由CLASSPATH 环境变量定义,JVM 加载类就是从这个路径中提取。然而,有些类并不存在于一个本地文件,他们可能来自其它的来源,如它们可能来源于网络,也可能由一个应用程序(动态)创建。defineClass()方法 将一个字节数组转换为一个Class类的实例,这个实例可以由Class.newInstance()创建。由类加载器创建的对象的方法和构造器(constructor)可以引用其它的类。为了确定要引用的类,JVM触发类加载器的loadClass()方法。例如:一个应用程序可以创建一个网络类加载器,使其能够从服务器端虾子类文件。代码可以如下所示:ClassLoader loader = new NetworkClassLoader(host, port);Object main = loader.loadClass("Main", true).newInstance();. . .这个网络类加载器子类从网络上加载类,必须定义findClass()方法和loadClassData()方法。一旦它下载了足够的字节,能够组成这个被加载的类,它就会使用defineClass()方法来创建这个类的实例。类加载器实现样例如下:class NetworkClassLoader extends ClassLoader {String host;int port; public Class findClass(String name) {byte[] b = loadClassData(name);return defineClass(name, b, 0, b.length);} private byte[] loadClassData(String name) {// load the class data from the connection. . .}}[注:]转载 http://jlife.blogdriver.com/http://www.cnblogs.com/huqingyu/archive/2004/11/13.html 不太明白,哪位可以指明点?如何才能做到跟jsp页面一样,即使修改即时编译使用 目前最重要的问题:如何能使我的类都通过我的ClassLoader来载入?各位大虾救命啊 都通过你的ClassLoader加载?那你自己是不是要写一个ClassLoader?如果是,你冲在其中的findClass,然后每次找到后强制加载(java的默认行为是如果已经加载过就不加载) 在ssh框架中的传值问题 令人吐血的Hibernate多对多删除约束。。。。 系统中基础信息库的处理 回头请教servlet调hibernate接口的问题,servlet怎么调用hibernate接口 关于strurs2滴整合 tomcat部署手机程序服务器端后如何以手机模式查看页面? 如何设置jacorb的codeset ? hibernate的双向一对多关系问题! j2ee开发实在是麻烦! 了解一下北京搞java的要求和待遇,来者有分。 如何读取网络中指定URL文件? 各位高手,为什么JbuilderX+jboss3.2.3开发组合中,不能编译非根目录的jsp文件呀
http://www-900.ibm.com/developerWorks/cn/java/j-dyn0429/index.shtml
http://www-900.ibm.com/developerWorks/cn/java/j-dyn0603/index.shtml
http://www-900.ibm.com/developerWorks/cn/java/j-dyn0715/index.shtml
http://www-900.ibm.com/developerWorks/cn/java/j-dyn0916/index.shtml
http://www-900.ibm.com/developerWorks/cn/java/j-dyn0203/index.shtml
如果给了一个类的名字,那么类加载器将会去加载和生成有关构成这个类的定义的数据。典型的策略是将这个类名转换成一个文件名,然后从文件系统中读取这个类文件名。
每个类对象都有一个对其自身类进行定义的类加载器的引用(reference)
多个数组类的类对象不能由类加载器创建,但它们可以根据需要,由java 运行时(runtime)自动创建。针对一个数组类通过Class.getClassLoader()来返回它的类加载器,这个过程和与返回数组里面的元素的类加载器的过程是一样的。但是,如果数组的元素是基本类型(primitive type)的,那么这个数组就没有类加载器。
应用程序为了能具有扩展(extend)JVM动态加载类的能力,它需要实现(implement)类加载器的子类。
类加载器的典型使用是由安全管理者来指定安全域。
一个ClassLoader 类,使用委托(delegation model)模型来查找类和资源。每个ClassLoader 类的实例都有一个向上一级的(父亲)类加载器)的联接。当需要查找类或资源的时候,一个ClassLoader 实例在亲自查找这些资源之前,先将查找任务委托给它的父加载器。在类加载器内部构建虚拟机的类加载器,称为“bootstrap 类加载器”,它本身没有父加载器,但它却可以充当一个ClassLoader 实例的父亲。
通常由JVM从一个由(操作系统)平台支撑的本地文件系统中加载类对象。例如:在 Unix 系统中,文件的路径由CLASSPATH 环境变量定义,JVM 加载类就是从这个路径中提取。
然而,有些类并不存在于一个本地文件,他们可能来自其它的来源,如它们可能来源于网络,也可能由一个应用程序(动态)创建。defineClass()方法 将一个字节数组转换为一个Class类的实例,这个实例可以由Class.newInstance()创建。
由类加载器创建的对象的方法和构造器(constructor)可以引用其它的类。为了确定要引用的类,JVM触发类加载器的loadClass()方法。
例如:一个应用程序可以创建一个网络类加载器,使其能够从服务器端虾子类文件。代码可以如下所示:
ClassLoader loader = new NetworkClassLoader(host, port);
Object main = loader.loadClass("Main", true).newInstance();
. . .
这个网络类加载器子类从网络上加载类,必须定义findClass()方法和loadClassData()方法。一旦它下载了足够的字节,能够组成这个被加载的类,它就会使用defineClass()方法来创建这个类的实例。类加载器实现样例如下:
class NetworkClassLoader extends ClassLoader {
String host;
int port;
public Class findClass(String name) {
byte[] b = loadClassData(name);
return defineClass(name, b, 0, b.length);
} private byte[] loadClassData(String name) {
// load the class data from the connection
. . .
}
}[注:]转载
如何才能做到跟jsp页面一样,即使修改即时编译使用
那你自己是不是要写一个ClassLoader?
如果是,你冲在其中的findClass,然后每次找到后强制加载(java的默认行为是如果已经加载过就不加载)