关于JavaAgent的教程
我想学习一些关于JavaAgent的知识,但研究并不容易。大多数结果都涉及到关于JavaAgent的教程,java,javaagents,Java,Javaagents,我想学习一些关于JavaAgent的知识,但研究并不容易。大多数结果都涉及到JADE。我知道java代理可能意味着两件事: 用Java编程的代理是代理的化身 分布式系统的概念 用于增强JVM工作的低级软件组件,如 作为探查器、代码覆盖工具等 我发现了类似的问题,但不幸的是,它也涉及到版本1 您知道关于javaagent的第2版文章、初学者教程和示例项目吗? 我已经找到了一个,但我正在寻找更多。第二个案例谈到了-这个链接指向一个Javadoc,它相当具有描述性 这里是完整的说明和一个例子 主要概念
JADE
。我知道java代理可能意味着两件事:
我已经找到了一个,但我正在寻找更多。第二个案例谈到了-这个链接指向一个Javadoc,它相当具有描述性 这里是完整的说明和一个例子 主要概念是:
premain
(类似于main
)方法,如下所示:
import java.lang.instrument.Instrumentation;
class Example {
public static void premain(String args, Instrumentation inst) {
...
}
}
java -javaagent:yourAwesomeAgent.jar -jar yourApp.jar
manifest.txt
),将该类标记为预主执行。其内容包括:
Premain-Class: Example
JAR
存档中:
javac Example.java
jar cmf manifest.txt yourAwesomeAgent.jar *.class
-javaagent
参数执行JVM,如下所示:
import java.lang.instrument.Instrumentation;
class Example {
public static void premain(String args, Instrumentation inst) {
...
}
}
java -javaagent:yourAwesomeAgent.jar -jar yourApp.jar
如第#2点所述,javaagent没有多少有用的资源
-javaagent
参数在-jar
参数之前,这一点很重要。我必须在清单中添加一个额外的条目,以便使用Javassist。您可以在我对这个问题的回答中看到:我最近按照以下步骤构建了一个代理。我一直在创建jar时遇到问题,直到我发现命令应该首先列出target.jar文件,然后列出manifest文件。您可能还需要在示例
类中提供一个空的main
方法,或者,可能会抛出一个错误,抱怨缺少main方法。请记住在manifest.txt中使用一个空行