最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java利用endorsed如何覆蓋jdk提供的類詳解

 更新時間:2017年09月05日 08:47:19   作者:jijs  
這篇文章主要給大家介紹了關(guān)于Java利用endorsed如何覆蓋jdk提供的類的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

前言

在之前我們分析 Tomcat catalina.bat 原理解析 時候,我們發(fā)現(xiàn)在啟動tomcat的參數(shù)中存在 -Djava.endorsed.dirs 參數(shù)

如下圖:


-Djava.endorsed.dirs

Java提供了endorsed技術(shù):

關(guān)于 endorsed :可以的簡單理解為 -Djava.endorsed.dirs 指定的目錄面放置的jar文件,將有覆蓋系統(tǒng)API的功能。但是能夠覆蓋的類是有限制的,其中不包括java.lang包中的類(出于安全的考慮)。

為什么必須使用 endorsed 進(jìn)行替換 jdk 中的類呢?

因?yàn)閖ava是采用雙親委派機(jī)制進(jìn)行加載class類的。而jdk提供的類只能由類加載器Bootstrap進(jìn)行加載。如果你想要在應(yīng)用程序中替換掉jdk中的某個類是無法做到的,所以java提供了endorsed來達(dá)到你想要替換到系統(tǒng)中的類。

示例

修改java.util.ArrayList類中的 get(int index) 方法,在該方法中添加輸出獲取的值信息,如果是字符串直接輸出,如果不是則輸出類信息,及加載該元素類的classloader。代碼如下:


然后通過打包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);
  }
 }
}

運(yùn)行的時候加上 -Djava.endorsed.dirs=D:\endorsed 參數(shù)。如下圖:


運(yùn)行結(jié)果

從結(jié)果中我們發(fā)現(xiàn),打印的信息不是我們程序中輸出的,而是ArrayList.get()方法中打印出來的。

endorsed 另一種修改方式

根據(jù)官方文檔描述:如果不想添加-D參數(shù),如果我們希望基于這個JDK下的都統(tǒng)一改變,那么我們可以將我們修改的jar放到:

$JAVA_HOME/jre/lib/endorsed 

這樣基于這個JDK的所有的ArrayList都改變了!??!

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • 使用Java實(shí)現(xiàn)一個解析CURL腳本小工具

    使用Java實(shí)現(xiàn)一個解析CURL腳本小工具

    文章介紹了如何使用Java實(shí)現(xiàn)一個解析CURL腳本的工具,該工具可以將CURL腳本中的Header解析為KV Map結(jié)構(gòu),獲取URL路徑、請求類型,解析URL參數(shù)列表和Body請求體,感興趣的小伙伴跟著小編一起來看看吧
    2025-02-02
  • java中將一個List等分成n個list的工具方法(推薦)

    java中將一個List等分成n個list的工具方法(推薦)

    下面小編就為大家?guī)硪黄猨ava中將一個List等分成n個list的工具方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • MyBatis?SQL映射文件的作用和結(jié)構(gòu)詳解

    MyBatis?SQL映射文件的作用和結(jié)構(gòu)詳解

    MyBatisSQL映射文件定義了SQL語句和參數(shù)映射規(guī)則,用于將Java代碼與數(shù)據(jù)庫操作解耦,實(shí)現(xiàn)SQL語句的靈活配置和動態(tài)生成
    2025-03-03
  • Mybatis在insert插入操作后如何返回主鍵id問題

    Mybatis在insert插入操作后如何返回主鍵id問題

    這篇文章主要介紹了Mybatis在insert插入操作后如何返回主鍵id問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • JPA如何使用nativequery多表關(guān)聯(lián)查詢返回自定義實(shí)體類

    JPA如何使用nativequery多表關(guān)聯(lián)查詢返回自定義實(shí)體類

    這篇文章主要介紹了JPA如何使用nativequery多表關(guān)聯(lián)查詢返回自定義實(shí)體類,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java之Spring認(rèn)證使用Profile配置運(yùn)行環(huán)境講解

    Java之Spring認(rèn)證使用Profile配置運(yùn)行環(huán)境講解

    這篇文章主要介紹了Java之Spring認(rèn)證使用Profile配置運(yùn)行環(huán)境講解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • Java實(shí)現(xiàn)中國象棋的示例代碼

    Java實(shí)現(xiàn)中國象棋的示例代碼

    中國象棋是起源于中國的一種棋,屬于二人對抗性游戲的一種,在中國有著悠久的歷史。由于用具簡單,趣味性強(qiáng),成為流行極為廣泛的棋藝活動。本文將利用Java實(shí)現(xiàn)這一經(jīng)典游戲,需要的可以參考一下
    2022-02-02
  • Ajax+Servlet+jsp顯示搜索效果

    Ajax+Servlet+jsp顯示搜索效果

    這篇文章主要為大家詳細(xì)介紹了Ajax+Servlet+jsp顯示搜索效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • SpringBoot ThreadLocal 簡單介紹及使用詳解

    SpringBoot ThreadLocal 簡單介紹及使用詳解

    ThreadLocal 叫做線程變量,意思是 ThreadLocal 中填充的變量屬于當(dāng)前線程,該變量對其他線程而言是隔離的,也就是說該變量是當(dāng)前線程獨(dú)有的變量,這篇文章主要介紹了SpringBoot ThreadLocal 的詳解,需要的朋友可以參考下
    2024-01-01
  • Java SpringBoot攔截器詳解

    Java SpringBoot攔截器詳解

    這篇文章主要介紹了Java SpringBoot攔截器的使用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-10-10

最新評論

大邑县| 安西县| 卫辉市| 铜梁县| 丹巴县| 满城县| 汤原县| 邵武市| 新宁县| 泸定县| 崇阳县| 萨嘎县| 自治县| 泾阳县| 恩平市| 信宜市| 六盘水市| 唐山市| 吉木萨尔县| 邵阳市| 孟津县| 龙口市| 赤城县| 曲靖市| 将乐县| 浦城县| 皋兰县| 榕江县| 偃师市| 宜兰市| 庆云县| 大同市| 来凤县| 哈尔滨市| 铜川市| 彝良县| 保定市| 虞城县| 辽中县| 邵东县| 隆子县|