Не удается получить доступ к классу в плагине Eclipse из проекта Java

#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. Но поскольку это плагин, это, вероятно, не поможет им работать.