0

我正在使用 JVM 工具接口。我正在尝试使用 SetSystemProperty() 调用在 Agent_OnLoad 事件中创建 SystemProperty。如果该属性存在,它会正确设置一个新值。但是,如果该属性不存在,SetSystemProperty 将返回一个错误代码,说明它无法写入该属性(错误 98)。

在加载类之前,是否有另一种方法可以在 JVM 生命周期的早期创建系统属性?

2012 年 5 月 24 日更新:作为代理,我被各种程序加载。我不能要求程序设置此属性(在我的用例中不实用)。我正在寻找一种从代理代码本身设置属性的方法。经过大量的实验,我得出的结论是,这是不可能的。

4

2 回答 2

1

如果您还没有查看系统属性的 JVMTI 文档,那么这将是值得的:

http://docs.oracle.com/javase/6/docs/platform/jvmti/jvmti.html#props

看起来 VM 系统属性和由java.lang.System. 如果您真的想设置一个可以通过 使用的属性System.getProperty,那么您可能会坚持通过 JNI 进行操作(根据 JVMTI 文档)。

于 2012-05-24T14:15:44.913 回答
0

-D<property name>=<property value>从命令行启动时添加属性。

系统属性可以在 VM 启动之前设置

取自http://docs.oracle.com/javase/1.5.0/docs/guide/jvmti/jvmti.html#starting

于 2012-05-23T11:23:11.647 回答