Java中有三种ClassLoader
1. Bootstrap class loader:
用于加载java语言规范所定义的标准库的类,比如String,ArrayList,Object等。
它通常是在虚拟机种用本地代码(如C)实现,在系统中用null表示。
这里之所以返回null,与其说是技术原因,到不如说更多得是出于安全考虑。
试想,如果我们能够获得这个ClassLoader的引用,那么我们就可以自由的加载或卸载语言标准类的实现了。
2. Extension class loader:
负责加载Java语言可选实现的类。
我机器上的"Java环境中安装的可选包(optional package)"在这个路径中:
D:\DevelopingTools\Java\jdk1.6.0\jre\lib\ext
因此这里面的java包中的类,都会由Extension class loader来加载。
另外:sun,ibm等不同厂商的扩展包会不同。
3. Application class loader:
剩下的,由我们写的,或者由我们引用的类,也就是CLASSPATH上的类有这个加载器加载。
有时候也称为system class loader,Java程序可以通过调用java.lang.getSystemClassLoader()获得它的引用。
上面的讨论也说明了 Java中获取classpath路径下的资源文件
这篇blog中的原因。
应外,关于这些加载器的关系以及调用次序可以参考这篇blog Java Class Loader
。
这里给出一段测试代码来解释这三个ClassLoader(By L同学),跑在sun jdk 1.6上:
public class TestClassLoader {
public static void main(String[] args) {
Object o = new Object();
System.out.println(o.getClass().getClassLoader());
System.out.println(sun.security.pkcs11.Secmod.class.getClassLoader());
System.out.println(TestClassLoader.class.getClassLoader());
}
}
他的输出为:
写道
null
sun.misc.Launcher$ExtClassLoader@3e25a5
sun.misc.Launcher$AppClassLoader@1a46e30
分享到:
相关推荐
遇到类冲突、类找不到等问题时,可通过设置JVM参数`-verbose:class`来查看类加载的详细信息,或者使用JDK的`jmap -histo`命令分析内存中的类加载情况。 8. **线程安全** 类加载过程中的某些步骤,如加载和初始化...
System.out.println("parent class loader: " + cl.getParent()); cl = cl.getParent(); } ``` 这段代码会打印出当前的类加载器以及它们的父加载器。通常,你会看到AppClassLoader(系统类加载器)、...
本工具是对java class文件进行加密保护的工具!本工具全面支持linux/unix/windows操作系统。 众所周知,java编译后的class文件是一种中间字节字文件, 很容易被反编译工具反编译,而传统的java源代码保护方法基本都是...
创建自定义类加载器通常需要继承`java.lang.ClassLoader`,重写`findClass()`或`loadClass()`方法,从而控制类的查找和加载过程。这使得开发者能够在运行时根据需要加载特定的类,比如从网络、数据库或其他非传统...
本工具是对java class文件进行加密保护防止反编译的工具!本工具全面支持linux/unix/windows操作系统。 继推出v1.0版本后,获得了用户大量的支持与的反馈,我们再次推出本v2.0版,对加密算法进行了更大的改进,安全...
JVM 负责执行 Java 字节码,Java Class Loader 负责加载类文件,而 Java Security Manager 则负责实施安全策略。 Java 安全协议 Java 安全协议是指 Java 平台使用的安全协议,包括 SSL/TLS、HTTPS 等。这些协议...
* Java Class Loader:Java Class Loader 负责加载和管理 Java 类文件。 * Java Native Interface(JNI):JNI 是 Java 平台标准版提供的一种机制,用于将 Java 代码与 native 代码集成。 4.Java 平台标准版的新...
2. Java Class Loader: Class Loader 负责加载和链接 Java 字节码,提供了类加载和解析的功能。 3. Java Native Interface(JNI): JNI 是 Java 平台和 native 代码之间的接口,提供了 Java 和 native 代码之间的...
本手册还涵盖了 Java SE 9 中的其他工具和命令,例如 Java 任务计划器(java)、Java Class Loader(java.lang.ClassLoader)等。 在本手册中,我们将详细介绍每个工具和命令的使用方法、参数设置和示例代码,以...
Java加载器(Loader)是Java虚拟机(JVM)的核心组成部分,主要负责将类的字节码文件加载到JVM中并转换为运行时的数据结构。在深入理解这个概念之前,我们首先要明白Java的类加载机制。Java的类加载过程包括加载、...
Java虚拟机(JVM)的Class文件原理是Java程序运行的基础。Java中的所有类都必须先被装载到JVM中才能被执行,这个过程由JVM内的类装载器(ClassLoader)来完成。类装载器的工作是将类文件从硬盘读取到内存中,使得JVM...
Java的Class类是Java反射机制的核心,它代表了Java中的每一个类和接口。Class类的主要功能是提供关于类的信息,包括类的结构、属性、方法等。以下是对Java Class类的详细说明: 1. **Class类对象的创建**:在Java中...
- `public class Actions { ... }` 主类定义,包含了所有的成员变量和方法。 #### 四、核心方法解析 1. **`init()`**:初始化方法负责加载配置文件、登录系统、初始化参数等基础工作。 - **配置加载**:`load_...
在Java编程语言中,类加载器(Class-Loader)是一个至关重要的组件,它负责加载类到JVM(Java虚拟机)中。这个“class-loader测试工程”可能是一个专门设计用于研究和理解Java类加载机制的项目。在Java中,类加载...
### 动态类加载在Java虚拟机中的应用 #### 概述 动态类加载是Java虚拟机(JVM)的一项核心特性,它为Java平台带来了强大的功能:即能够在运行时安装软件组件。这一机制不仅提高了系统的灵活性,还优化了资源管理。...
The Class Loader Architecture The Java Class File The Java API The Java Programming Language Architectural Tradeoffs Future Trends On the CD-ROM The Resources Page 2 Platform independence Why ...
`Class.forName`实际上依赖于当前线程的上下文类加载器(Context Class Loader)。如果类已经加载,`forName`会直接返回该类的`Class`对象;否则,它会使用当前线程的上下文类加载器来加载类。而`ClassLoader`通常...