日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java实现扫地agent_如何实现java agent?分享java agent的使用案例

發布時間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java实现扫地agent_如何实现java agent?分享java agent的使用案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java agent如何實現?1、實現java agent需要實現premain方法;2、必須在MANIFEST.MF文件中有Premain-Class。

在字節碼這個層面對類和方法進行修改的技術,能夠在不影響編譯的情況下,修改字節碼。可以理解spring的aop技術

java agent的作用

在字節碼這個層面對類和方法進行修改的技術,能夠在不影響編譯的情況下,修改字節碼。可以理解spring的aop技術

如何實現實現javaagent需要實現premain方法

必須在MANIFEST.MF文件中有Premain-Class

demo實現

agentpackage com.xueyou.demo.agent;

import javassist.ClassPool;

import javassist.CtClass;

import javassist.CtMethod;

import javassist.CtNewMethod;

import java.lang.instrument.ClassFileTransformer;

import java.lang.instrument.IllegalClassFormatException;

import java.security.ProtectionDomain;

public class FirstAgent implements ClassFileTransformer {

public final String injectedClassName = "com.xueyou.agentdemo.App";

public final String methodName = "hello";

public byte[] transform(ClassLoader loader, String className, Class> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException {

className = className.replace("/", ".");

// System.out.println(className);

if (className.equals(injectedClassName)) {

CtClass ctclass = null;

try {

ctclass = ClassPool.getDefault().get(className);// 使用全稱,用于取得字節碼類

CtMethod ctmethod = ctclass.getDeclaredMethod(methodName);// 得到這方法實例

ctmethod.insertBefore("System.out.println(11111111);");

return ctclass.toBytecode();

} catch (Exception e) {

System.out.println(e.getMessage());

e.printStackTrace();

}

}

return null;

}

}

預加載類package com.xueyou.demo;

import com.xueyou.demo.agent.FirstAgent;

import java.lang.instrument.Instrumentation;

/**

* Hello world!

*/

public class App {

public static void premain(String agentOps, Instrumentation inst) {

System.out.println("=========premain方法執行========");

System.out.println(agentOps);

// 添加Transformer

inst.addTransformer(new FirstAgent());

}

}

maven指定預加載類

org.apache.maven.plugins

maven-compiler-plugin

1.8

1.8

utf-8

org.apache.maven.plugins

maven-shade-plugin

3.0.0

package

shade

implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">

com.xueyou.demo.App

如何使用

這里有兩種方式指定javaagent:

1)使用命令行:java -javaagent:XXX.jar ddd.jar

2)使用idea的vm option選項。

相關文章:

相關視頻:

總結

以上是生活随笔為你收集整理的java实现扫地agent_如何实现java agent?分享java agent的使用案例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。