您的位置:首页 > 编程语言 > Java开发

类的加载器 java.lang.ClassLoader

2011-08-24 14:43 465 查看
java.lang.ClassLoader
类的基本职责就是根据一个指定的类的名称,找到或者生成其对应的字节代码,然后从这些字节代码中定义出一个 Java 类,即
java.lang.Class
类的一个实例。除此之外,
ClassLoader
还负责加载 Java 应用所需的资源,如图像文件和配置文件等。不过本文只讨论其加载类的功能。为了完成加载类的这个职责,
ClassLoader
提供了一系列的方法:

getParent()
返回该类加载器的父类加载器。
loadClass(String name)
加载名称为
name
的类,返回的结果是
java.lang.Class
类的实例。
findClass(String name)
查找名称为
name
的类,返回的结果是
java.lang.Class
类的实例。
findLoadedClass(String name)
查找名称为
name
的已经被加载过的类,返回的结果是
java.lang.Class
类的实例。
defineClass(String name, byte[] b, int off, int len)
把字节数组
b
中的内容转换成 Java 类,返回的结果是
java.lang.Class
类的实例。这个方法被声明为
final
的。
resolveClass(Class<?> c)
链接指定的 Java 类。
 

public class ClassLoaderTest extends ClassLoader {
public static void main(String[] args) throws SecurityException, NoSuchMethodException {

// 根类加载器,加载的核心类库
URL[] urls = sun.misc.Launcher.getBootstrapClassPath().getURLs();
for (URL u : urls) {
System.out.println(u);
}
// 扩展类 加载器,,加载的系统属性:java.ext.dirs 返回的路径下的 class
System.err.println("扩展类(extention classLoader)加载器"
+ ClassLoader.getSystemClassLoader().getParent());//非继承关系,只是意义上
System.out.println(System.getProperty("java.ext.dirs"));
// 应用(系统 application classLoader)类加载器,, 加载系统环境变量 PATH 或 CLASSPATH
// 指定的JAR包和类路径
System.err.println("应用(系统)类加载器" + ClassLoader.getSystemClassLoader());
// System.out.println(System.getenv("PATH"));
// System.out.println(System.getenv("CLASSPATH"));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐