Java 覆盖系统类:endorsed 技术
2016-04-25 16:45
495 查看
之前接触过 Java.ext.dirs
用于扩展jdk的系统库,那么 -Djava.endorsed.dirs 又有什么神奇的作用呢?
java提供了endorsed技术:
关于endorsed:可以的简单理解为-Djava.endorsed.dirs指定的目录面放置的jar文件,将有覆盖系统API的功能。可以牵强的理解为,将自己修改后的API打入到虚拟机指定的启动API中,取而代之。但是能够覆盖的类是有限制的,其中不包括java.lang包中的类。
这有什么用?
比如java的原生api不能满足需求,假设我们需要修改 ArrayList
类,由于我们的代码都是基于ArrayList做的,那么就必需用到 Java endorsed 技术,将我们自己的ArrayList,注意包和类名和java自带的都是一样的,打包成一个jar包,放入到-Djava.endorsed.dirs指定的目录中,这样我们在使用java的ArrayList的时候就会调用的我们定制的代码中,是不是很酷!!
根据官方文档描述:如果不想添加-D参数,如果我们希望基于这个JDK下的都统一改变,那么我们可以将我们修改的jar放到:
$JAVA_HOME/jre/lib/endorsed
这样基于这个JDK的所有的ArrayList都改变了!!!
用于扩展jdk的系统库,那么 -Djava.endorsed.dirs 又有什么神奇的作用呢?
java提供了endorsed技术:
关于endorsed:可以的简单理解为-Djava.endorsed.dirs指定的目录面放置的jar文件,将有覆盖系统API的功能。可以牵强的理解为,将自己修改后的API打入到虚拟机指定的启动API中,取而代之。但是能够覆盖的类是有限制的,其中不包括java.lang包中的类。
这有什么用?
比如java的原生api不能满足需求,假设我们需要修改 ArrayList
类,由于我们的代码都是基于ArrayList做的,那么就必需用到 Java endorsed 技术,将我们自己的ArrayList,注意包和类名和java自带的都是一样的,打包成一个jar包,放入到-Djava.endorsed.dirs指定的目录中,这样我们在使用java的ArrayList的时候就会调用的我们定制的代码中,是不是很酷!!
根据官方文档描述:如果不想添加-D参数,如果我们希望基于这个JDK下的都统一改变,那么我们可以将我们修改的jar放到:
$JAVA_HOME/jre/lib/endorsed
这样基于这个JDK的所有的ArrayList都改变了!!!
相关文章推荐
- java中的定时器
- [Java]适配器设计
- spring 插入语句的时候 返回主键
- Windows——Ant+Launch4j+Inno setup将Java项目打包为可安装exe
- spring4 hibernate4(5) 整合
- 《JAVA与模式》之建造模式
- 通过反射将javabean封装为json对象
- Myeclipse中如何新建maven项目
- MyEclipse删除不再使用的工作空间记录
- [改善Java代码]equals应该考虑null值的情景
- spring mvc常用的注解
- 【SSH进阶之路】Spring简介,搭建Spring环境——轻量级容器框架(一)
- Java I/O输入输出流
- Eclipse SVN插件与TortoiseSVN的对应关系及下载链接
- Lombok 安装、入门 - 消除冗长的 java 代码
- myeclipse自动生成实体类
- Java 堆、栈、内存分析
- java内部类和匿名内部类
- Java并发编程:Callable、Future和FutureTask
- MyEclipse10安装SVN插件