知识大全 Java的ClassLoader与Package机制

Posted 路径

篇首语:见强不怕,遇弱不欺。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java的ClassLoader与Package机制相关的知识,希望对你有一定的参考价值。

Java的ClassLoader与Package机制  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  为了深入了解Java的ClassLoader机制 我们先来做以下实验

  

  package java lang; public class Test  public static void main(String[] args)  char[] c = toCharArray();  String s = new String( c);

  String类有一个Package权限的构造函数String(int offset int length char[] array) 按照默认的访问权限 由于Test属于java lang包 因此理论上应该可以访问String的这个构造函数 编译通过!执行时结果如下

  

  Exception in thread main java lang SecurityException: Prohibited package name:java lang at java lang ClassLoader defineClass(Unknown Source) at java security SecureClassLoader defineClass(Unknown Source) at URLClassLoader defineClass(Unknown Source) at URLClassLoader access$ (Unknown Source) at URLClassLoader$ run(Unknown Source) at java security AccessController doPrivileged(Native Method) at URLClassLoader findClass(Unknown Source) at java lang ClassLoader loadClass(Unknown Source) at sun misc Launcher$AppClassLoader loadClass(Unknown Source) at java lang ClassLoader loadClass(Unknown Source) at java lang ClassLoader loadClassInternal(Unknown Source)

  奇怪吧?要弄清为什么会有SecurityException 就必须搞清楚ClassLoader的机制

  Java的ClassLoader就是用来动态装载class的 ClassLoader对一个class只会装载一次 JVM使用的ClassLoader一共有 种

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

  这 种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装载

cha138/Article/program/Java/hx/201311/26236

相关参考

知识大全 Java 中的 ClassPath 和 Package

Java中的ClassPath和Package  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 java经典问题大集合

  作用域publicprivateprotected以及不写时的区别  答区别如下  作用域当前类同一package子孙类其他package  public√√√√  protected√√√×  

知识大全 ClassLoader介绍

ClassLoader介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  JVM在运行时会产生三

知识大全 一个简单的自定义ClassLoader的实现

一个简单的自定义ClassLoader的实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  很多

知识大全 类的集合--包

  作者印佛西地   包(package)的基本概念  一旦你创建了一个类并想重复地使用它那么把它放在一个包中将是非常有效的包(package)是一组类的集合例如Java本身提供了许多包如javajo

知识大全 RSA算法的实现——java版

RSA算法的实现——java版  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!    package

知识大全 JAVA文件操作类,方便读写小文件

JAVA文件操作类,方便读写小文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  package

知识大全 Annotation之ElementType.PACKAGE

Annotation之ElementType.PACKAGE  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 Oracle的Package的作用及用法

Oracle的Package的作用及用法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  公司需求

知识大全 关于使用包的一些提示

  关于包的祥解:    概念:  包(Package)是Java编程的基础包蕴涵于标准类的体系结构和用户自己的程序中包是有唯一命名  的类的集合    给自己的类打包:  在打包之前我们最好先定义一