ISelection - Как я могу получить ClassLoader для выбранного класса в навигаторе - PullRequest
0 голосов
/ 20 марта 2011

Я новичок в разработке плагинов Eclipse и пытаюсь разработать плагин, в котором мне необходимо загрузить класс, выбранный в навигаторе.

Подскажите, пожалуйста, как мне загрузить класс или создать загрузчик классов из плагина eclipse, чтобы загрузить класс в рабочую среду eclipse, которая использует мой плагин.

Заранее спасибо.

С уважением Гилани

1 Ответ

0 голосов
/ 21 марта 2011

Вам необходимо создать URLClassLoader.Возможно, вы захотите, чтобы это было от родителей или нет, в зависимости от ваших соображений безопасности.Если он создан загрузчиком классов комплекта OSGi, то у пользователя будет доступ ко всем классам в этом конкретном комплекте, и это может стать задним ходом для пользователя, получающего во время выполнения доступ ко всей платформе Eclipse (и доступ к реестру подключаемых модулей иУслуги OSGi и др.)Пользователь также может позвонить System.exit().Это может не быть проблемой в однопользовательской системе, но есть над чем подумать, особенно если пользователь загружает непроверенные сценарии из Интернета.

При этом вам нужно сделать что-то подобное:

  1. Создание экземпляра URLClassLoader и добавление URL-адресов каталогов, содержащих файлы классов, которые вы хотите загрузить.
  2. , если вы хотите, чтобы классы имели доступ к среде выполнения Eclipse, тогдаустановите для родительского загрузчика значение ((BundleHost) Activator.getBundleContext().getBundle()).getLoaderProxy().getBundleLoader()
  3. Добавьте все каталоги, соответствующие URL-адресам, с которых пользователь может загружать классы.Но вы должны включить все зависимости для загрузки классов.
  4. Этого должно быть достаточно для загрузки необходимых вам классов.
...