91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

如何在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

万年县| 嵊州市| 梁山县| 木里| 疏附县| 乌鲁木齐县| 都江堰市| 齐河县| 鲜城| 保山市| 唐河县| 余江县| 天气| 贞丰县| 乐清市| 通许县| 吴忠市| 巴林左旗| 岗巴县| 花莲县| 绥芬河市| 宜城市| 定南县| 台前县| 仙桃市| 贵溪市| 东阳市| 车致| 沙湾县| 锡林浩特市| 鄂伦春自治旗| 汉川市| 溧水县| 海原县| 大足县| 札达县| 砀山县| 枞阳县| 仲巴县| 淮北市| 凤翔县|