Используя инструментарий Java, мы можем получить доступ к классу, загружаемому загрузчиком классов Java из JVM, и изменить его байт-код, вставив наш специальный код, все это выполняется во время выполнения. Нам не нужно беспокоиться о безопасности, они управляются одним и тем же контекстом безопасности, применимым для классов Java и соответствующих загрузчиков классов.Запуск приложения RCP для Eclipse с помощью инструментария Java
Мы можем получить доступ к некоторым приложениям Java, используя это при запуске в одном загрузчике классов.
Теперь мы пытаемся получить доступ к приложению RCP приложения eclipse с помощью инструментария Java, но в RCP каждый комплект имеет свой собственный загрузчик классов, а наш инструментальный код работает с загрузчиком классов Java. , когда мы обращаемся к нему, он бросает исключение «Workbench еще не создано», в то время как рабочий стол запущен и работает. (Надеюсь, это из-за разных загрузчиков классов для них обоих).
Я пробовал делать вещи от here, но безуспешно. Есть ли способ, которым мы можем работать с RCP-приложением с помощью инструментария Java.
У последнего метода есть проблема, о которой вы должны знать, если у вас несколько приложений в одной JVM. Например, когда вы развертываете несколько войн в контейнере сервлетов. Проблема в том, что MethodHandle указывает только на один экземпляр вашего класса, когда вам, вероятно, нужен отдельный экземпляр для каждого приложения. – Felix
@Felix: это может обрабатываться с помощью клавиш, например. если вы используете инструментальные классы (объекты класса) в качестве ключей, конфликт невозможен. Тем не менее, модуляция Java 9 может создать новые препятствия, но, возможно, и новые решения ... – Holger