Java ClassLoader
来源:互联网 发布:豌豆公主app数据 编辑:程序博客网 时间:2024/06/03 18:07
ClassLoader 作用动态的加载class文件到内存中。
Java 默认提供三个ClassLoader
BootStrapClassLoader
最底层的加载器,负责加载JDK中的核心类库,通过程序可以知道它负责加载那些相关的jar或class
URL[] urls = sun.misc.Launcher.getBootstrapClassPath().getURLs(); for (int i = 0; i < urls.length; i++) { System.out.println(urls[i].toExternalForm()); } 或者System.out.println(System.getProperty("sun.boot.class.path").replaceAll(";", "\n"));
输出:C:\jdk1.6.0_30\jre\lib\resources.jarC:\jdk1.6.0_30\jre\lib\rt.jarC:\jdk1.6.0_30\jre\lib\sunrsasign.jarC:\jdk1.6.0_30\jre\lib\jsse.jarC:\jdk1.6.0_30\jre\lib\jce.jarC:\jdk1.6.0_30\jre\lib\charsets.jarC:\jdk1.6.0_30\jre\lib\modules\jdk.boot.jarC:\jdk1.6.0_30\jre\classes
ExtensionClassLoader
加载Java的扩展类,默认加载JAVA_HOME/jre/lib/ext/目下的所有jar.
AppClassLoader
加载应用程序classpath目录下的所有jar和class文件.
Path
- windows
PATH=%PATH%; C:\Program Files\Java\jdk1.6.0_26\bin
- Linux
PATH=${PATH}:/home/opt/jdk1.6.0_26/bin
JAVA_HOME
System.getProperty(“java.home”)
- windows
JAVA_HOME=C:\Program Files\Java\JDK1.6\
- Linux
JAVA_HOME=/opt/java/jdk_1.6
ClassPath
System.getProperty(“java.class.path”)
- windows
CLASSPATH=%CLASSPATH%;JAVA_HOME\lib;
- Linux
CLASSPATH=/home/tester/classes
ClassNotFoundException 和 NoClassDefFoundError
- 在调用Class.forName() or
loadClass()方法在运行时动态加载类对象.如果在classpath中没有找到就会抛出ClassNotFoundException - 要查找的类在编译的时候是存在的,运行的时候却找不到了,就会抛出 NoClassDefFoundError
,如编译了一个类B,在类A中调用,编译完成以后,你又删除掉B,运行A的时候那么就会出现这个错误.
注意:
除了Java默认提供的三个ClassLoader之外,用户还可以根据需要定义自已的ClassLoader,而这些自定义的ClassLoader都必须继承自java.lang.ClassLoader类,也包括Java提供的另外二个ClassLoader(Extension ClassLoader和App ClassLoader)在内,但是Bootstrap ClassLoader不继承自ClassLoader,因为它不是一个普通的Java类,底层由C++编写,已嵌入到了JVM内核当中,当JVM启动后,Bootstrap ClassLoader也随着启动,负责加载完核心类库后,并构造Extension ClassLoader和App ClassLoader类加载器.
0 0
- java ClassLoader
- JAVA classLoader
- java ClassLoader
- Java ClassLoader
- Java ClassLoader
- java ClassLoader
- java classloader
- Java ClassLoader
- java ClassLoader
- java classLoader
- Java Classloader
- Java ClassLoader
- Java ClassLoader
- java classloader
- Java Classloader
- java classloader
- java classLoader
- Java ClassLoader
- MongoDB学习九--MongoDB的主从复制
- Android中AlertDialog的使用
- Android常用控件之GridView的蒙板用处和写法
- 使用gcore工具产生core文件而不杀死进程
- 人际关系的社会科学
- Java ClassLoader
- 7 天玩转 ASP.NET MVC — 第 7 天
- linux下执行aapt时,提示/usr/lib/libz.so.1 no version information available
- iOS-UIViewController的UIView生命周期
- 红黑树详细讲解(多文整合)
- Balance POJ 1837
- JAVA基础10 设计模式:结构型模式(适配器 代理模式 桥接模式 享元模式 组合模式 装饰器模式)
- HDU 1005 Number Sequence(矩阵快速幂)
- Hibernate3使用(二)Spring整合Hibernate,使用xml配置