56

javaagentsについて知りたいのですが、調査は簡単ではありません。結果のほとんどはを参照していJADEます。私はJavaエージェントが2つのことを意味することができることを知っています:

  1. 分散システムのエージェント概念の化身であるJavaでプログラムされたエージェント。
  2. プロファイラー、コードカバレッジツールなど、JVMの動作を強化するための低レベルのソフトウェアコンポーネント

ここで同様の質問を見つけましたが、残念ながらバージョン1も参照しています。

バージョン2のjavaagentに関する記事、初心者向けのチュートリアル、サンプルプロジェクトを知っていますか?ここで見つけましたが、もっと探しています。

4

2 に答える 2

87

2番目のケースでは、Java Instrumentation APIについて説明しています。このリンクは、かなり説明的なJavadocを指しています。

そして、ここに、Javaインストルメンテーションエージェントを作成する方法の完全な説明と例があります

主なコンセプトは次のとおりです。

  1. 次のように、静的premain(のアナロジーとしてmain)メソッドを実装します。

    import java.lang.instrument.Instrumentation;
    
    class Example {
        public static void premain(String args, Instrumentation inst) {
            ...
        }
    }
    
  2. manifest.txtこのクラスをpre-main実行用にマークするマニフェストファイル(たとえば)を作成します。その内容は次のとおりです。

    Premain-Class: Example
    
  3. クラスをコンパイルし、このクラスをJARアーカイブにパッケージ化します。

    javac Example.java
    jar cmf manifest.txt yourAwesomeAgent.jar *.class
    
  4. -javaagent次のように、パラメータを使用してJVMを実行します。

    java -javaagent:yourAwesomeAgent.jar -jar yourApp.jar
    
于 2012-08-10T09:15:46.337 に答える
6

ポイント2で説明したように、javaagentに役立つリソースはほとんどありません。

于 2017-03-30T08:21:54.530 に答える