国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - JavaAgent的簡單例子

JavaAgent的簡單例子

2021-09-13 10:51catoop Java教程

這篇文章主要介紹了JavaAgent的簡單例子,對JavaAgent感興趣的同學,可以參考下

JavaAgent 是JDK 1.5 以后引入的,也可以叫做Java代理。

JavaAgent 是運行在 main方法之前的攔截器,它內定的方法名叫 premain ,也就是說先執行 premain 方法然后再執行 main 方法。

那么如何實現一個 JavaAgent 呢?很簡單,只需要增加 premain 方法即可。

看下面的代碼和代碼中的注釋說明:

  1. package com.shanhy.demo.agent;
  2.  
  3. import java.lang.instrument.Instrumentation;
  4.  
  5. /**
  6. * 我的Java代理
  7. *
  8. * @author 單紅宇(365384722)
  9. * @myblog http://blog.csdn.net/catoop/
  10. * @create 2016年3月30日
  11. */
  12. public class MyAgent {
  13.  
  14. /**
  15. * 該方法在main方法之前運行,與main方法運行在同一個JVM中
  16. * 并被同一個System ClassLoader裝載
  17. * 被統一的安全策略(security policy)和上下文(context)管理
  18. *
  19. * @param agentOps
  20. * @param inst
  21. * @author SHANHY
  22. * @create 2016年3月30日
  23. */
  24. public static void premain(String agentOps, Instrumentation inst) {
  25. System.out.println("=========premain方法執行========");
  26. System.out.println(agentOps);
  27. }
  28.  
  29. /**
  30. * 如果不存在 premain(String agentOps, Instrumentation inst)
  31. * 則會執行 premain(String agentOps)
  32. *
  33. * @param agentOps
  34. * @author SHANHY
  35. * @create 2016年3月30日
  36. */
  37. public static void premain(String agentOps) {
  38. System.out.println("=========premain方法執行2========");
  39. System.out.println(agentOps);
  40. }
  41. }

寫完這個類后,我們還需要做一步配置工作。

在 src 目錄下添加 META-INF/MANIFEST.MF 文件,內容按如下定義:

  1. Manifest-Version: 1.0
  2. Premain-Class: com.shanhy.demo.agent.MyAgent
  3. Can-Redefine-Classes: true

要特別注意,一共是四行,第四行是空行,還有就是冒號后面的一個空格,如下截圖:

JavaAgent的簡單例子

然后我們打包代碼為 myagent.jar

注意打包的時候選擇我們自己定義的 MANIFEST.MF

JavaAgent的簡單例子

接著我們在創建一個帶有main方法的主程序工程,截圖如下:

JavaAgent的簡單例子

然后將該主程序打包為 myapp.jar

如何執行 myagent.jar ?我們通過 -javaagent 參數來指定我們的Java代理包,值得一說的是 -javaagent 這個參數的個數是不限的,如果指定了多個,則會按指定的先后執行,執行完各個 agent 后,才會執行主程序的 main 方法。

命令如下:

  1. java -javaagent:G:\myagent.jar=Hello1
  2. -javaagent:G:\myagent.jar=Hello2
  3. -javaagent:G:\myagent.jar=Hello3 -jar myapp.jar

輸出結果:

G:\>java -javaagent:G:\myagent.jar=Hello1 -javaagent:G:\myagent.jar=Hello2 -javaagent:G:\myagent.jar=Hello3 -jar myapp.jar

=========premain方法執行========

Hello1

=========premain方法執行========

Hello2

=========premain方法執行========

Hello3

特別提醒:如果你把 -javaagent 放在 -jar 后面,則不會生效。也就是說,放在主程序后面的 agent 是無效的。

比如執行:

  1. java -javaagent:G:\myagent.jar=Hello1
  2. -javaagent:G:\myagent.jar=Hello2 -jar myapp.jar
  3. -javaagent:G:\myagent.jar=Hello3

只會有前個生效,第三個是無效的。
輸出結果:

G:\>java -javaagent:G:\myagent.jar=Hello1 -javaagent:G:\myagent.jar=Hello2 -jar myapp.jar -javaagent:G:\myagent.jar=Hello3

=========premain方法執行========

Hello1

=========premain方法執行========

Hello2

命令中的Hello1為我們傳遞給 premain 方法的字符串參數。

至此,我們會使用 javaagent 了,但是單單看這樣運行的效果,好像沒有什么實際意義嘛。

我們可以用 javaagent 做什么呢?下篇文章我們來介紹如何在項目中應用 javaagent。

最后說一下,還有一種,在main方法執行后再執行代理的方法,因為不常用,而且主程序需要配置 Agent-Class,所以不常用,如果需要自行了解下 agentmain(String agentArgs, Instrumentation inst) 方法。

以上就是JavaAgent的簡單例子的詳細內容,更多關于JavaAgent的資料請關注服務器之家其它相關文章!

原文鏈接:https://blog.csdn.net/catoop/article/details/51034739

延伸 · 閱讀

精彩推薦
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7472021-02-04
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美日韩中文在线观看 | 天天操夜夜爽 | 麻豆av在线播放 | 欧美一级黄 | 日本二区视频 | 国产a视频| 国产精品伦一区二区三级视频 | 制服诱惑一区二区 | 无毒黄网 | 丝袜天堂| 日韩在线观看中文字幕 | 国产专区在线 | 欧美视频二区 | 综合久久久久 | 中文字幕亚洲一区二区三区 | 欧美一区二区三区免费视频 | 久久国内| 亚洲一区二区在线看 | 欧美视频二区 | 久久99久久久久久 | 国产成人精品一区二区 | 久久精品一区二区三区四区 | 日韩欧美一区二区三区免费观看 | 亚洲免费大片 | 97色在线观看免费视频 | 毛片一级在线观看 | 综合色成人 | 国产资源在线观看 | 日韩电影免费在线观看 | 激情网在线观看 | 91亚洲成人| 成人1区2区| 福利片网站 | 四虎影院入口 | 国产人成精品一区二区三 | 成人国产精品一级毛片视频 | 欧美片网站免费 | 噜噜噜噜狠狠狠7777视频 | |级毛片 | 国产精品亚洲第一区在线暖暖韩国 | 免费一区二区 |