Обработчик агента JVMTI Agent_OnLoad не может создать системное свойство - PullRequest
0 голосов
/ 28 сентября 2011

Я использую интерфейс инструмента JVM.Я пытаюсь создать SystemProperty в событии Agent_OnLoad с помощью вызова SetSystemProperty ().Если свойство существует, оно правильно устанавливает новое значение.Однако, если свойство не существует, SetSystemProperty возвращает код ошибки, говорящий о том, что он не может записать свойство (ошибка 98).

Есть ли другой способ создать системное свойство в начале жизни JVM, до загрузки классовОбновление?

5/24/12: Как агент, я загружен различными программами.Я не могу попросить программы установить это свойство (в моем случае это не практично).Я ищу способ установить свойство из самого кода агента.После долгих экспериментов я пришел к выводу, что это невозможно.

Ответы [ 2 ]

1 голос
/ 24 мая 2012

Если вы еще не просматривали документы JVMTI о системных свойствах, это будет полезно:

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

Похоже, что существует различие между системными свойствами VMи свойства управляются java.lang.System.Если вы действительно хотите установить свойство, которое будет доступно через System.getProperty, то вы, вероятно, застряли с этим через JNI (согласно документации JVMTI).

0 голосов
/ 23 мая 2012

Добавьте свойство, используя -D<property name>=<property value> при запуске из командной строки.

системные свойства могут быть установлены до того, как они будут использованы в пуск ВМ

взято из http://docs.oracle.com/javase/1.5.0/docs/guide/jvmti/jvmti.html#starting

...