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

StackOverflow https://stackoverflow.com/questions/460872

Вопрос

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

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

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

ТИА

Это было полезно?

Решение 2

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

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

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

Другие советы

Возможно, вы захотите дать Средство проверки пути к классу и Помощник по пути к классу попробовать.

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

Конфликты jar для проверки ClasPath:
classpath checker

Помощник по пути к классам заблокирован (скрыт) Просмотр классов:
classpath helper

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top