JVMTI获取名为Class / File的名称

时间:2011-08-12 14:53:56

标签: java filenames agent classname jvmti

我试着阅读整个jvmti文档,但我找不到解决问题的方法。

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

java -agentpath:<pathToAgent> <calledJavaProgram>

在大写字母中,我想得到&lt;的名称。叫做JavaProgram&gt;。

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

是否有(其他)方法获得此名称?

谢谢你的帮助 Markus G.

1 个答案:

答案 0 :(得分:0)

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

您可以使用main方法找出类的名称:

  1. 使用JNI调用works it out
  2. 的Java方法
  3. 使用BCI修改所有主要方法并对您的代理进行JNI回调,第一个被调用的是您想要的。这也允许您获取args[]数组。