Как сделать классы проекта видимыми для плагина Eclipse? - PullRequest
1 голос
/ 03 августа 2011

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

В двух словах, вы щелкаете правой кнопкой мыши по классу Java в своем проекте, открывается мастер, и в текстовом поле появляется полное имя выбранного класса Java. Когда вы нажимаете «Далее», код пытается сделать CClass.forName(s), где s - имя класса.

Проблема в том, что Class.forName выдает исключение класса не найден, я полагаю, потому что класс Java в проекте eclipse на самом деле не находится в пути к классам мастера.

Кто-нибудь может указать мне правильное направление? Как сделать так, чтобы классы в проекте eclipse были видны мастеру по пути к классам?

Ответы [ 3 ]

1 голос
/ 03 августа 2011

Каждый плагин загружается загрузчиком другого класса. Однако есть способы загрузки классов из других плагинов. Чтение этого поможет

http://www.eclipsezone.com/articles/eclipse-vms/

http://wiki.eclipse.org/index.php/Context_Class_Loader_Enhancements

1 голос
/ 03 августа 2011

Вы не можете использовать Class.forName () для этого. Класс Java в проекте Java, над которым работает ваш плагин, даже не находится в том же процессе, что и ваш плагин, не говоря уже о том, что он доступен для загрузки в любой загрузчик классов.

Вы должны взглянуть на Java Model JDT или API Java AST, чтобы создать плагин, который работает с файлами Java в проекте Java.

http://www.vogella.de/articles/EclipseJDT/article.html

0 голосов
/ 30 мая 2016

Сначала вы должны загрузить загрузчик классов в выбранном Java-проекте, а затем использовать загрузчик классов для загрузки класса.Загрузчик классов проекта Java отличается от загрузчика классов в плагине eclipse.см. подробный код по следующей ссылке: https://sdqweb.ipd.kit.edu/wiki/JDT_Tutorial:_Class_Loading_in_a_running_plugin

код по ссылке научит вас, как получить загрузчик классов для выбранного проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...