Java利用endorsed如何覆盖jdk提供的类详解
前言 在之前我们分析 Tomcat catalina.bat 原理解析 时候,我们发现在启动tomcat的参数中存在 如下图: -Djava.endorsed.dirs Java提供了endorsed技术: 关于 endorsed :可以的简单理解为 为什么必须使用 endorsed 进行替换 jdk 中的类呢? 因为java是采用双亲委派机制进行加载class类的。而jdk提供的类只能由类加载器Bootstrap进行加载。如果你想要在应用程序中替换掉jdk中的某个类是无法做到的,所以java提供了endorsed来达到你想要替换到系统中的类。 示例 修改 然后通过打包jar文件,放到一个目录。 我这里是放到 “D:endorsed” 该目录下 测试类 public class Bootstrap { public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(10); for(int i=0;i<10; i++){ list.add("test"+i); list.get(i); } } } 运行的时候加上 运行结果 从结果中我们发现,打印的信息不是我们程序中输出的,而是 endorsed 另一种修改方式 根据官方文档描述:如果不想添加-D参数,如果我们希望基于这个JDK下的都统一改变,那么我们可以将我们修改的jar放到: $JAVA_HOME/jre/lib/endorsed 这样基于这个JDK的所有的ArrayList都改变了!!! 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程小技巧的支持。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |