JVMTI Agent_OnLoad处理程序无法创建系统属性

时间:2011-09-28 16:36:01

标签: java jvmti

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

看起来VM系统属性与java.lang.System管理的属性之间存在差异。如果你真的想设置一个可以通过System.getProperty获得的属性,那么你可能会坚持通过JNI(按照JVMTI文档)来实现它。

答案 1 :(得分:0)

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

  

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

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