我正在使用JVM工具界面。我正在尝试使用SetSystemProperty()调用在Agent_OnLoad事件中创建SystemProperty。如果属性存在,则会正确设置新值。但是,如果该属性不存在,SetSystemProperty将返回一个错误代码,表示无法写入该属性(错误98)。
在类加载之前,是否有另一种方法可以在JVM的早期阶段创建系统属性?
5/24/12更新:作为代理人,我被各种程序加载。我不能要求程序设置此属性(在我的用例中不实用)。我正在寻找一种方法来从代理代码本身设置属性。经过大量的实验,我得出的结论是,这是不可能的。
答案 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