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

标签 java filenames agent classname jvmti

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

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

java -agentpath:<pathToAgent> <calledJavaProgram>

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

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

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

谢谢你的帮助 马库斯 G.

最佳答案

根据JNI文档中,JavaVMInitArgs 结构用于从 native 代码创建新的 VM,所以我认为这是一个转移注意力的问题。据我所知,在 JVMTI 或 Java 中都没有 API 访问命令行参数。

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

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

关于java - JVMTI 获取被调用类/文件的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7041926/

相关文章:

java - 在 ServerSocket 和 ServerSocketChannel 中接受和绑定(bind)

java - 需要提高查询具有数百万行的表的性能 - SQL Server

java - new Thread(Runnable runnableObj) 与 new Thread(Runnable runnableObj) 对比扩展线程

java - android如何从服务器接收数据

Java 读取具有特定模式的文件

iphone - 创建 iOS 分发证书需要什么角色?

filenames - ack可以仅根据文件名查找文件吗?

amazon-web-services - Instagram 如何命名文件

maven - 向 Team Services 构建代理添加 maven 功能

machine-learning - 将公用事业分配给本地各州时,难以指定长期观点