java - JVMTI获取被称为类/文件的名称

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

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

java -agentpath:<pathToAgent> <calledJavaProgram>


在大写形式下,我想获取<被称为JavaProgram>的名称。

GetSourceFileName(jclass klass,...)仅使我获得在参数列表中设置的“ klass”的名称,但是自从我启动程序以来,我什至都不知道这个……对吗?

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

谢谢您的帮助
马库斯·G。

最佳答案

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

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


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

本文翻译自 https://stackoverflow.com/questions/7041926/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 java filenames agent classname jvmti


相关文章:

java - 获取应用程序图标时,MainActivity类型的getContext()方法未定义

python - 批处理文件重命名:使用正则表达式的填充时间为零?

c++ - 如何在3dsmax sdk中获取当前打开的场景文件的完整路径?

java - Jade Java代理通信

ios - TeamCity 8 xcode 5代理代码签名错误

java - 从SSLContext提取证书

java - 杰克逊@JsonPropertyOrder被忽略

java - 如何在Android的3级数据中从Firebase数据库中选择数据?

string - 在Bash中获取文件扩展名[重复]

testing - TFS:为多个物理Web环境配置测试代理