亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在java中使用agent

發布時間:2021-03-26 17:01:33 來源:億速云 閱讀:206 作者:Leah 欄目:編程語言

如何在java中使用agent?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

如何實現

1.實現javaagent需要實現premain方法
2.必須在MANIFEST.MF文件中有Premain-Class

demo實現

agent
 package 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);// 使用全稱,用于取得字節碼類<使用javassist>
          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指定預加載類

<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <encoding>utf-8</encoding>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <transformers>
                <transformer
                    implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                  <manifestEntries>
                    <PremainClass>com.xueyou.demo.App</Premain-Class>
                  </manifestEntries>
                </transformer>
              </transformers>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

如何使用

這里有兩種方式指定javaagent:

1)使用命令行:java -javaagent:XXX.jar ddd.jar
2)使用idea的vm option選項。

如何在java中使用agent

關于如何在java中使用agent問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

梁河县| 仪征市| 昌乐县| 林甸县| 汤原县| 金昌市| 微博| 荥阳市| 镇江市| 隆昌县| 无锡市| 凤山县| 盐城市| 许昌县| 和硕县| 历史| 崇礼县| 阿拉善右旗| 德安县| 玉环县| 泰安市| 岳西县| 郯城县| 莱芜市| 阿拉善左旗| 明光市| 红桥区| 平凉市| 开封市| 偏关县| 弥勒县| 宜阳县| 塘沽区| 南澳县| 雷山县| 连城县| 那曲县| 长春市| 神农架林区| 漯河市| 平度市|