Eclipse: Как обеспечить приоритет jar в плагине над другими версиями в других местах?

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

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

Как я могу точно определить, какая версия Lucene используется во время создания индекса? Мой путь к классу плагина начинается с моей связанной версии Lucene, поэтому я ожидал, что моя версия должна получить приоритет.

ТИА

3 ответа

Решение

Кажется, сейчас работает. Для тех из вас, кто заинтересован, это то, что я должен был сделать:

  • Удалил банку Lucene 1.4.3 из моего плагина
  • Скопировал старый плагин Lucene из более старой версии Eclipse в версию 3.4.
  • Удалил все зависимости в мастере plugin.xml. Теперь все плагины Lucene видны.
  • Выбрал версию 1.4.xx и изменил свойства, чтобы установить максимальную версию до 1.5
  • Добавлены другие зависимости плагина
  • Изменен путь сборки: удален старый jar, добавлена ​​зависимость от плагина Lucene 1.4.3
  • Пересчитать прогон конфигурации. Плагин Lucene 1.4.3 не был добавлен автоматически, поэтому добавил его вручную.
  • Теперь, когда индекс сформирован, загружается версия 1.4.3.

Надеюсь, это кому-нибудь пригодится.

Возможно, вы захотите попробовать ClassPath Checker и ClassPath Helper.

Таким образом, вы сможете точно определить, какие jar-файлы используются в вашей среде разработки, чтобы сравнить их с jar-файлами, присутствующими в вашей среде развертывания, где Люс генерирует индекс.

Конфликты в банке ClasPath Checker:
проверка пути к классам

Classpath Helper Blocked (Obscured) Виды классов:
помощник по пути к классам

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

Я не знаю ваш конкретный код, но если бы я планировал использовать Lucene в моем плагине, я бы использовал функциональность OSGi "Import-Package" или "Require-Bundle" для выражения зависимости; Я бы не включил JAR Lucene в свой плагин. Если бы каждый плагин включал свой собственный JAR Lucene, вы бы тратили место, но, что более важно, в конечном итоге получали несовместимые версии (как у вас).

Сайт OSGI - не лучшее место для начала вашего путешествия по OSGi (это хорошо для спецификаций OSGi и блога Питера Криенса). Лучше начать с чего-то вроде онлайн- книги Нила Бартлетта.

Другие вопросы по тегам