`

Java Class Loader

阅读更多

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
 

 

 

 

 

分享到:
评论
1 楼 wjason 2010-01-15  
liuzm 写道
不错,等哈试试看看
有空来我这坐坐  http://www.liuzm.com


一定 

相关推荐

    java class loader(JAVA类加载器)

    遇到类冲突、类找不到等问题时,可通过设置JVM参数`-verbose:class`来查看类加载的详细信息,或者使用JDK的`jmap -histo`命令分析内存中的类加载情况。 8. **线程安全** 类加载过程中的某些步骤,如加载和初始化...

    Java Class Loader总结.doc

    System.out.println("parent class loader: " + cl.getParent()); cl = cl.getParent(); } ``` 这段代码会打印出当前的类加载器以及它们的父加载器。通常,你会看到AppClassLoader(系统类加载器)、...

    java class加密保护工具

    本工具是对java class文件进行加密保护的工具!本工具全面支持linux/unix/windows操作系统。 众所周知,java编译后的class文件是一种中间字节字文件, 很容易被反编译工具反编译,而传统的java源代码保护方法基本都是...

    java 类加载器 class loader

    创建自定义类加载器通常需要继承`java.lang.ClassLoader`,重写`findClass()`或`loadClass()`方法,从而控制类的查找和加载过程。这使得开发者能够在运行时根据需要加载特定的类,比如从网络、数据库或其他非传统...

    java class加密保护(完全免费) v2.1

    本工具是对java class文件进行加密保护防止反编译的工具!本工具全面支持linux/unix/windows操作系统。 继推出v1.0版本后,获得了用户大量的支持与的反馈,我们再次推出本v2.0版,对加密算法进行了更大的改进,安全...

    JDK17-security-developer-guide.pdf

    JVM 负责执行 Java 字节码,Java Class Loader 负责加载类文件,而 Java Security Manager 则负责实施安全策略。 Java 安全协议 Java 安全协议是指 Java 平台使用的安全协议,包括 SSL/TLS、HTTPS 等。这些协议...

    JDK19-jdk-migration-guide.pdf

    * Java Class Loader:Java Class Loader 负责加载和管理 Java 类文件。 * Java Native Interface(JNI):JNI 是 Java 平台标准版提供的一种机制,用于将 Java 代码与 native 代码集成。 4.Java 平台标准版的新...

    javagui开发俄罗斯方块游戏.doc

    2. Java Class Loader: Class Loader 负责加载和链接 Java 字节码,提供了类加载和解析的功能。 3. Java Native Interface(JNI): JNI 是 Java 平台和 native 代码之间的接口,提供了 Java 和 native 代码之间的...

    JDK9-JSE-Tools Reference-319.pdf

    本手册还涵盖了 Java SE 9 中的其他工具和命令,例如 Java 任务计划器(java)、Java Class Loader(java.lang.ClassLoader)等。 在本手册中,我们将详细介绍每个工具和命令的使用方法、参数设置和示例代码,以...

    loader in java houtian

    Java加载器(Loader)是Java虚拟机(JVM)的核心组成部分,主要负责将类的字节码文件加载到JVM中并转换为运行时的数据结构。在深入理解这个概念之前,我们首先要明白Java的类加载机制。Java的类加载过程包括加载、...

    深入Class Loader

    ### 深入理解Java的Class Loader:动态性与灵活性的核心 #### 一、Class Loader在Java中的核心地位 在Java编程的世界里,类加载器(Class Loader)扮演着极其关键的角色,它不仅支撑起了Java的动态性,还极大地...

    Java虚拟机class文件原理

    Java虚拟机(JVM)的Class文件原理是Java程序运行的基础。Java中的所有类都必须先被装载到JVM中才能被执行,这个过程由JVM内的类装载器(ClassLoader)来完成。类装载器的工作是将类文件从硬盘读取到内存中,使得JVM...

    认识Java的Class类.doc

    Java的Class类是Java反射机制的核心,它代表了Java中的每一个类和接口。Class类的主要功能是提供关于类的信息,包括类的结构、属性、方法等。以下是对Java Class类的详细说明: 1. **Class类对象的创建**:在Java中...

    loaderrunner测试脚本

    - `public class Actions { ... }` 主类定义,包含了所有的成员变量和方法。 #### 四、核心方法解析 1. **`init()`**:初始化方法负责加载配置文件、登录系统、初始化参数等基础工作。 - **配置加载**:`load_...

    class-loader测试工程

    在Java编程语言中,类加载器(Class-Loader)是一个至关重要的组件,它负责加载类到JVM(Java虚拟机)中。这个“class-loader测试工程”可能是一个专门设计用于研究和理解Java类加载机制的项目。在Java中,类加载...

    java虚拟机原理java虚拟机原理.docx

    类加载器(Class Loader)是JVM中的一个重要组件,负责将Java字节码文件加载到JVM内存中。类加载器可以分为四种:Bootstrap Class Loader、Extension Class Loader、System Class Loader和User-Defined Class Loader...

    class loader

    ### 动态类加载在Java虚拟机中的应用 #### 概述 动态类加载是Java虚拟机(JVM)的一项核心特性,它为Java平台带来了强大的功能:即能够在运行时安装软件组件。这一机制不仅提高了系统的灵活性,还优化了资源管理。...

    java基础测试.doc

    装载过程是由类加载器(Class Loader)完成的,类加载器分为应用程序类加载器(Application Class Loader)、扩展类加载器(Extension Class Loader)和引导类加载器(Bootstrap Class Loader)。每个类加载器都有特定的任务...

    深入java虚拟机(inside the java virtual machine)

    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 ...

    在Java的反射中,Class.forName和Class

    `Class.forName`实际上依赖于当前线程的上下文类加载器(Context Class Loader)。如果类已经加载,`forName`会直接返回该类的`Class`对象;否则,它会使用当前线程的上下文类加载器来加载类。而`ClassLoader`通常...

Global site tag (gtag.js) - Google Analytics