`
Tian.Wang
  • 浏览: 71260 次
  • 性别: 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
分享到:
评论

相关推荐

    ClassLoader类加载机制

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

    java类加载器实例

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

    Java类加载原理解析

    每个java开发人员对java.lang.ClassNotFoundExcetpion这个异常肯定都不陌生,这背后就涉及到了java技术体系中的类加载。Java的类加载机制是java技术体系中比较核心的部分,虽然和大部分开发人员直接打交道不多,但是...

    housemd内存加载工具查看

    housemd 类加载工具查看 查看类的加载包 定位类加载异常等问题

    java 类加载调试

    他们提供的见解有助亍理解和解决常见的 Java 异常,例如 NoClassDefFoundError 和 ClassNotFoundException,以及更有挅戓性的问题,例如类装入器约束迗反和死锁。在第 1 部分中,他们详细描述了 Java 类装入的工作...

    javax.naming.NamingException: Cannot create resource instance

    javax.naming.NamingException: Cannot create resource instance类加载异常,希望可以帮助跟我一样错误的人。

    异常以及异常中常用到的类

    ClassNotFoundException 不能加载所需的类 InputMismatchException 欲得到的数据类型与实际输入的类型不匹配 IllegalArgumentException 方法接收到非法参数 ClassCastException 对象强制类型转换出错 ...

    Java工程师必备面试题【多线程、反射、类加载器、JVM、泛型、异常处理、注解、面向对象编程、集合、IO流、序列化】

    内容概要:以上列出的Java面试题涵盖了Java语言的基础知识、面向对象编程、集合、IO流、多线程、反射、类加载器、JVM、序列化、泛型、异常处理、注解等多个方面。 适用人群:以上Java面试题适用于准备Java开发...

    Android异步加载源码示例【源代码】

    Android异步加载,通过异步加载外部网站的多张图片,来介绍和演示Android环境下如何去实现文件异步加载功能,... 程序中考虑到捕获RejectedExecutionException同时加载的图片过多而导致程序崩溃,附加了异常处理程序。

    Java类加载与锁

    本文写作的灵感来自Pierre-Hugues Charbonneau的为什么加载不存在的类会影响系统性能一文。这让我想起了之前的一次调试经历,当时也遇到了类似的问题,只不过表现略有不同。  出问题的应用程序是Yet Another ...

    类加载器深入解析与阶段分解

    1.类加载 在java代码中,类型的加载、连接与初始化过程都是在程序运行期间完成的。 提供了更大的灵活性,增加了更多的可能性。 2.Java虚拟机与程序的生命周期 如下几种情况,虚拟机将结束生命周期: 执行了System....

    javascript图片预加载完整实例

    主要介绍了javascript图片预加载实现方法,以完整实例形式分析了JavaScript图片预加载显示的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    安卓开发框架工具类相关-WelikeAndroid是一款引入即用的便捷开发框架一行代码完成http请求bitmap异步加载数据库增删查改同时拥有最超前的异常隔离机制.zip

    WelikeAndroid 是一款引入即用的便捷开发框架,一行代码完成http请求,bitmap异步加载,数据库增删查改,同时拥有最超前的异常隔离机制.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考...

    Java异常处理

    用户的角度。因为用户非专业人员,或者不熟悉软件系统,在使用过程中常常会出现输入错误的情况,或者是...异常产生的原因:试图打开的文件不存在、网络连接中断、算术运算被0除、数组下标越界、要加载类文件不存在等

    重力异常二维正演中的无网格方法

    无网格法是一类新型数值算法,具有精度高、高阶形函数构造与物性加载便利等特点,在计算力学领域应用广泛。将无网格方法(PIM、RPIM及EFGM)用于重力异常场二维正演计算:首先从重力异常二维变分问题出发,利用Galerkin法...

    Spring中的5种通知和3种加载通知的方式

    本人笔记中的源代码,Spring中的5种通知和3种加载通知的方式,五个通知包括:前置通知、后置通知、环绕通知、异常通知、引用通知。三种加载方式:默认加载、按名字加载、代理类加载

    tomcat加载jar异常问题的分析与解决

    项目使用springboot启动一个web项目,在启动阶段看到console中出现了异常“1.10.3-1.4.3\hdf5.jar 系统找不到指定的文件”,虽然这些异常不影响项目的正常运行,但作为一个严谨的技术人员,看到这些异常就像见到...

    JDBC数据访问接口

    加载成功后,会将Driver类的实例注册到DriverManager类中,若加载失败,将抛出ClassNotFoundException(未找到指定Driver类)异常。 在编写访问数据库的JAVA程序时,必须把特定数据库的JDBC驱动程序包加入到CLASSPATH...

    Tribuo 是 Java 编写的机器学习库,可提供多类分类、回归、聚类、异常检测和多标签分类

    Tribuo 是 Java 中的机器学习库, 提供多类分类、回归、聚类、异常检测 和多标签分类。Tribuo 提供流行的 ML 实现 算法,并包装其他库以提供统一的接口。 Tribuo 包含加载、特征化和转换数据所需的所有代码。 此外,...

Global site tag (gtag.js) - Google Analytics