#eclipse #plugins #eclipse-plugin #classpath
#eclipse #Плагины #eclipse-плагин #путь к классу
Вопрос:
Абстрактно, моя проблема заключается в следующем: я хочу получить доступ к классу, содержащемуся в плагине Eclipse, из проекта Java. Возможно ли это? Я включил этот класс в «Экспортированные пакеты» плагина, которые предположительно являются «всеми пакетами, которые этот плагин предоставляет клиентам». Может ли мой Java-проект быть «клиентом» или клиентами могут быть только другие плагины?
Более конкретно, я столкнулся с этой проблемой при использовании XText. Я создал редактор для языка, и программы, написанные на этом языке, хранятся в текстовом формате, который соответствует грамматике, определенной с помощью XText.
Я хочу, чтобы мои пользователи могли писать Java-программы, которые загружают файлы на основе xtext и манипулируют ими. Для этого им необходимо получить доступ ко всем классам, которые XText сгенерировал в проекте плагина. Однако я не смог использовать эти классы: в экземпляре Eclipse, на котором запущен плагин с моим редактором, эти классы не видны.
Как я могу получить к ним доступ? Единственное решение, которое я нашел, это экспортировать мой плагин в виде jar, а затем включить его в путь сборки проекта Java в другом экземпляре Eclipse, но это звучит не элегантно.
Другой способ взглянуть на эту проблему заключается в следующем: я хочу, чтобы определенный класс был доступен для любого проекта Java, созданного в экземпляре Eclipse, где загружен определенный плагин. Как я могу это сделать?
Спасибо за вашу помощь.
PS. Я запускаю второй экземпляр Eclipse (тот, в который загружен плагин) из первого экземпляра Eclipse.
Ответ №1:
После того, как вы создадите поддержку XText, вам нужно убедиться, что каждый пакет экспортирован с вкладки Runtime, отредактировав ваш MANIFEST.MF.
Затем, как только вы развернете свои плагины в eclipse, эта среда eclipse сможет видеть эти классы.
Но это помогло бы только другим разработчикам плагинов. Приложения Java могут видеть классы, которые существуют в classpath (например, если вы добавите jars плагинов), но поскольку работа большинства плагинов eclipse зависит от жизненного цикла eclipse, маловероятно, что их java-программы будут запускаться. Это не всегда так (вы можете использовать JFace без запущенного eclipse), но только для плагинов, специально разработанных таким образом.
Если ваш плагин установлен, вы можете создать java-проект и добавить jar плагина в качестве внешнего jar, используя переменную *ECLIPSE_HOME*. Если ваш плагин является проектом в рабочей области, вы можете зависеть от него (из пути сборки java) точно так же, как от другого проекта Java. Но поскольку это плагин, это, вероятно, не поможет им работать.