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 и блога Питера Криенса). Лучше начать с чего-то вроде онлайн- книги Нила Бартлетта.