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

原文 标签 java filenames agent classname 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[]数组。

相关文章:

php - 获取PharFileInfo对象的fileName属性

python - Scrapy Shell - 如何更改USER_AGENT

java - 方法被拦截两次,即使它被调用了一次

java - 如何在Java中获取XSSFWorkBook名称?

java - 次要GC和完整GC?

java - 奇怪的JDBC executeQuery异常

java - 如何在JGit中编写git log --stat命令

codeigniter - 更改CodeIgniter中上载文件的名称(点和下划线)

java - 尝试使用Java代理获取对象大小时出现“无法加载Premain-Class清单属性”

java - 在调用stopService方法后如何停止服务中的线程?在Android中