2

我试图通读整个 jvmti 文档,但没有找到解决问题的方法。

我想获取命令行中用于调用程序的类/文件的名称:

java -agentpath:<pathToAgent> <calledJavaProgram>

在大写的情况下,我想获得 < calledJavaProgram > 的名称。

GetSourceFileName(jclass klass,...) 只给我“klass”的名称,这是在参数列表中设置的,但是自从我启动程序后,我什至不知道这个......对吗?

有没有(其他)方法来获得这个名字?

感谢您的帮助 Markus G.

4

1 回答 1

0

根据JNI文档,该JavaVMInitArgs结构用于从本机代码创建新的虚拟机,所以我认为这是一个红鲱鱼。AFAIK 在 JVMTI 或 Java 中都没有 API 访问命令行参数。

您可以做一些事情来使用 main 方法找出类的名称:

  1. 使用 JNI 调用可以解决问题的 Java 方法。
  2. 使用 BCI 修改所有主要方法并对您的代理进行 JNI 回调,第一个被调用的就是您想要的。这也允许您获取args[]数组。
于 2012-04-15T20:22:40.753 回答