`
Tian.Wang
  • 浏览: 72593 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

类加载异常

 
阅读更多
Java的ClassLoader就是用来动态装载class的,ClassLoader对一个class只会装载一次,JVM使用的ClassLoader一共有4种:

启动类装载器,标准扩展类装载器,类路径装载器和网络类装载器。

这 4种ClassLoader的优先级依次从高到低,使用所谓的“双亲委派模型”。初秋日本街拍发型确切地说,如果一个网络类装载器被请求装载一个 java.lang.Integer,它会首先把请求发送给上一级的类路径装载器,如果返回已装载,则网络类装载器将不会装载这个 java.lang.Integer,如果上一级的类路径装载器返回未装载,它才会装载java.lang.Integer。

类似的,类 路径装载器收到请求后(无论是直接请求装载还是下一级的ClassLoader上传的请求),它也会先把请求发送到上一级的标准扩展类装载器,这样一层一 层上传,于是启动类装载器优先级最高,如果它按照自己的方式找到了java.lang.Integer,则下面的ClassLoader都不能再装载 java.lang.Integer,尽管你自己写了一个java.lang.Integer,试图取代核心库的java.lang.Integer是不 可能的,因为自己写的这个类根本无法被下层的ClassLoader装载。

再说说Package权限。Java语言规定,在同一个包中的 class,如果没有修饰符,默认为Package权限,包内的class都可以访问。但是这还不够准确。确切的说,只有由同一个ClassLoader 装载的class才具有以上的Package权限。比如启动类装载器装载了java.lang.String,类路径装载器装载了我们自己写的 java.lang.Test,它们不能互相访问对方具有Package权限的方法。这样就阻止了恶意代码访问核心类的Package权限方法。
-----------------
JVM 本身包含了一个ClassLoader称为Bootstrap ClassLoader,和JVM一样,Bootstrap ClassLoader是用本地代码实现的,它负责加载核心Java Class(即所有java.*开头的类)。另外JVM还会提供两个ClassLoader,它们都是用Java语言编写的,由Bootstrap ClassLoader加载;其中Extension ClassLoader负责加载扩展的Java class(例如所有javax.*开头的类和存放在JRE的ext目录下的类),Application ClassLoader负责加载应用程序自身的类。

原文地址:http://www.blogjava.net/javagrass/archive/2010/10/31/336622.html?opt=admin
分享到:
评论

相关推荐

    类加载机制1

    5. **类加载异常**: 在处理类加载时,可能会遇到`ClassNotFoundException`和`NoClassDefFoundError`等异常。前者通常发生在试图加载一个不存在的类时,后者则表明在类加载时或之前依赖的某个类未找到。这些错误...

    Tomcat启动时类加载顺序

    ### Tomcat启动时类加载顺序详解 ...理解Tomcat启动时类加载的顺序对于排查类加载异常、避免类版本冲突等问题至关重要。通过合理配置类和jar文件的位置,可以有效地避免这些问题的发生,确保Web应用程序稳定运行。

    懒加载异常解决.docx

    ### 懒加载异常解决知识点 #### 一、懒加载技术概述 懒加载(Lazy Loading)是一种按需加载策略,在程序设计中广泛应用于减少内存占用和提高系统性能。在Java开发中,尤其针对数据库操作频繁的应用场景,如...

    性能调优专题-jvm类加载机制-performance-jvmclassloader.zip

    7. **类加载异常处理** 在加载过程中,如果遇到类找不到、类格式错误等问题,JVM会抛出ClassNotFoundException、NoClassDefFoundError等异常。理解这些异常的原因和解决策略是性能调优的关键。 8. **热部署和热...

    类加载的工具

    - **故障排除**:在运行时错误或异常与类加载有关时,这些工具可以提供关键信息以定位问题。 综上所述,类加载工具是Java开发中不可或缺的辅助手段,它们帮助开发者深入理解类加载机制,优化应用性能,解决类加载...

    Java类加载原理解析

    当遇到`java.lang.ClassNotFoundException`异常时,通常是因为类加载过程出现了问题。了解类加载机制对于解决这类问题至关重要,同时也有助于深入理解Java虚拟机(JVM)的工作原理。 Java 类加载机制主要由类加载器...

    ClassLoader类加载机制

    类加载器是 Java 语言的一个创新,也是 ...不过如果遇到了需要与类加载器进行交互的情况,而对类加载器的机制又不是很了解的话,就很容易花大量的时间去调试 ClassNotFoundException和 NoClassDefFoundError等异常。

    Java类加载内幕详细讲解

    通过掌握类加载的过程、类加载器的工作原理以及类加载的线程安全性等方面的知识,开发者能够更好地利用Java的动态特性,优化程序性能,并避免常见的异常问题,如`ClassNotFoundException`等。此外,对于自定义类加载...

    RAD类加载器序列

    ### RAD 类加载器序列知识点详解 #### 一、概述 在使用WebSphere Application Server (WAS)部署企业级应用时,经常会遇到类加载器(ClassLoader)的问题。类加载器负责加载应用程序所需的类,并且有不同的模式来...

    java类加载器实例

    类加载器是 Java 语言的一个创新,也是 ...不过如果遇到了需要与类加载器进行交互的情况,而对类加载器的机制又不是很了解的话,就很容易花大量的时间去调试 ClassNotFoundException和 NoClassDefFoundError等异常。

    网络类加载器实现

    在Java编程语言中,类加载器(ClassLoader)是一个至关重要的组成部分,它负责将类的字节码加载到Java虚拟机(JVM)中,从而使程序能够运行。本篇文章将深入探讨“网络类加载器实现”,这是一个允许从网络上动态加载...

    Java虚拟机类装载机制

    Java虚拟机类装载机制是Java运行环境中的核心组成部分,它负责将类的字节码从磁盘、网络等不同来源加载到JVM中,并进行一系列处理以使类能够被...同时,理解类装载机制也有助于解决运行时类冲突、类加载异常等问题。

    Understanding the Java ClassLoader.pdf

    然而,在多线程环境中,还需要注意线程上下文类加载器的正确设置,以避免类加载异常。 ### 适应Java 2的更新 为了使自定义类加载器兼容Java 2,开发者需要确保遵循双亲委派模型。这意味着在自定义类加载器中,应该...

    web_classloader_test.zip_web classloader

    8. **类加载异常处理**:当类找不到或加载失败时,类加载器需要正确处理异常并给出反馈。这个测试可能包括了错误处理和日志记录的部分。 9. **性能优化**:类加载过程会影响应用的启动速度和内存占用。优化类加载...

    Java常见异常大全.docx

    2. **类加载异常(ClassNotFoundException)**:当尝试加载某个类,但JVM无法找到指定的类文件时,会抛出此异常。这可能是由于类路径设置不正确、类名拼写错误或者缺少相应的.jar文件导致的。 3. **算术异常...

    WebSphere Application Server V7 理解类装入器 中文翻译版

    ### WebSphere Application Server V7: 理解...通过掌握类装入器的基本概念和WebSphere特有的配置选项,开发者和系统管理员可以有效地管理应用程序的类加载过程,从而避免常见的类加载异常,并提高应用程序的整体性能。

    黑马程序员------类加载器学习注意点

    最后,了解类加载器在异常处理中的角色也很重要。例如,当尝试加载不存在的类时,会抛出`ClassNotFoundException`。正确处理这些异常可以帮助我们调试和优化代码。 总之,理解类加载器的工作原理和使用技巧是提升...

    ClassLoader 深入解析

    7. 类加载异常处理: 如果ClassLoader在加载过程中遇到问题,如找不到类或类定义错误,会抛出ClassNotFoundException或NoClassDefFoundError等异常,需要开发者进行适当的异常处理。 总之,理解ClassLoader的工作...

    深入探讨 Java 类加载器

    理解类加载器的工作原理对于处理`ClassNotFoundException`和`NoClassDefFoundError`等异常至关重要。开发人员应该熟悉类加载器的委托模型以及如何在需要时创建自定义类加载器。自定义类加载器通常用于动态加载代码、...

Global site tag (gtag.js) - Google Analytics