知识大全 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)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
作用域publicprivateprotected以及不写时的区别 答区别如下 作用域当前类同一package子孙类其他package public√√√√ protected√√√×
ClassLoader介绍 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! JVM在运行时会产生三
一个简单的自定义ClassLoader的实现 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 很多
作者印佛西地 包(package)的基本概念 一旦你创建了一个类并想重复地使用它那么把它放在一个包中将是非常有效的包(package)是一组类的集合例如Java本身提供了许多包如javajo
RSA算法的实现——java版 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! package
JAVA文件操作类,方便读写小文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! package
知识大全 Annotation之ElementType.PACKAGE
Annotation之ElementType.PACKAGE 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看
Oracle的Package的作用及用法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 公司需求
关于包的祥解: 概念: 包(Package)是Java编程的基础包蕴涵于标准类的体系结构和用户自己的程序中包是有唯一命名 的类的集合 给自己的类打包: 在打包之前我们最好先定义一