Не удается получить доступ к классу в плагине Eclipse из проекта Java - PullRequest
0 голосов
/ 21 мая 2011

Вкратце, моя проблема заключается в следующем: я хочу получить доступ к классу, содержащемуся в плагине Eclipse, из проекта Java. Является ли это возможным? Я включил этот класс в «Экспортируемые пакеты» плагина, которые предположительно являются «всеми пакетами, которые этот плагин предоставляет клиентам». Может ли мой Java-проект быть «клиентом» или только другие плагины могут быть клиентами?

Конкретнее, я столкнулся с этой проблемой при использовании XText. Я создал редактор для языка, и программы, написанные на этом языке, хранятся в текстовом формате, который соответствует грамматике, определенной с помощью XText.

Я хочу, чтобы мои пользователи могли писать программы на Java, которые загружают и обрабатывают эти файлы на основе xtext. Для этого им нужно получить доступ ко всем классам, которые XText сгенерировал в проекте плагина. Однако я не смог использовать эти классы: в экземпляре Eclipse, который запускает плагин с моим редактором, эти классы не видны.

Как я могу получить к ним доступ? Единственное решение, которое я нашел, - экспортировать мой плагин в виде jar, а затем включить его в путь сборки проекта Java, в другой экземпляр Eclipse, но это звучит не элегантно.

Другой способ решения этой проблемы заключается в следующем: я хочу, чтобы определенный класс был доступен для любого проекта Java, встроенного в экземпляр Eclipse, в который загружен определенный плагин. Как я могу это сделать?

Спасибо за вашу помощь.

PS. Я запускаю второй экземпляр Eclipse (тот, в который загружается плагин) из первого экземпляра Eclipse.

1 Ответ

1 голос
/ 23 мая 2011

После того, как вы сгенерируете поддержку XText, вам необходимо убедиться, что каждый пакет экспортируется из вкладки Runtime , отредактировав файл MANIFEST.MF .

.

Затем, как только вы развернете свои плагины в затмении, эта среда затмения сможет видеть эти классы.

Но это поможет только другим разработчикам плагинов. Java-приложения могут видеть классы, которые существуют в classpath (например, если вы добавляете jar плагинов), но, поскольку большинство плагинов eclipse зависят от жизненного цикла eclipse, маловероятно, что их java-программы будут работать. Это не всегда так (вы можете использовать JFace без запущенного затмения), но только для плагинов, специально спроектированных таким образом.

Если ваш плагин установлен, вы можете создать проект java и добавить jar плагина в качестве внешнего jar, используя переменную * ECLIPSE_HOME *. Если ваш плагин является проектом в рабочей области, вы можете зависеть от него (от пути сборки Java), как и другой проект Java. Но так как это плагин, это, вероятно, не поможет им работать.

...