Плагин Eclipse – во время выполнения используется неправильный jar-файл

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

Вопрос

У меня серьезная проблема с моим плагином Eclipse.

Мой плагин зависит от еще двух плагинов.Все эти плагины (включая мой) используют движок Mozilla Rhino, два из них используют js.jar (версия 1.4).Но мой плагин использует новую версию, которая еще не выпущена и упакована в MyRhino.jar.

При разработке все идет нормально — автодополнение кода предлагает мне классы и методы из моей специальной версии Rhino, никаких ошибок и т. д.

Но когда я запускаю свой плагин, используется другая версия Rhino, и я получаю исключения во время выполнения, такие как ClassNotFoundException и так далее.

Как я могу сказать eclipse, чтобы он использовал тот же jar во время выполнения, что и во время разработки?

Когда я разрабатывал плагины на NetBeans, решение было простым — поместить jar в отдельный модуль, указать, какие пакеты экспортировать, и объявить зависимость от этого нового модуля.Я нашел похожее решение в Eclipse, однако у меня оно не сработало - хотя я объявил зависимость от плагина-оболочки, пакеты и классы были недоступны даже во время разработки.

Я потратил несколько часов на решение этой проблемы и не решил ее, поэтому помощь приветствуется.Всем спасибо.

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

Решение 2

Наконец-то я решил это..

Создать плагин-оболочку из существующего jar-файла с помощью мастера нового проекта в eclipse просто.Но загвоздка в том, что мастер не включает jar в путь к классам пакета (как я и ожидал).Довольно сбивает с толку (по крайней мере для меня), что мастер делает за вас только половину работы :/

После вставки jar в путь к классам пакета плагинов-оболочек все работает.

В любом случае спасибо, Питер, за твой ответ :)

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

Убедитесь, что ваши зависимости верны.Если ваш код зависит от новой версии библиотеки, вам необходимо указать это в вашем MANIFEST.MF.Например.если вам требуется пакет org.mozilla.rhino, укажите необходимую минимальную версию:

Require-Bundle: org.mozilla.rhino;bundle-version="1.5.0"

В вашем MyRhino.jar необходимо будет указать правильную версию (например,1.5.0), хотя она еще не выпущена:

Bundle-Version: 1.5.0.qualifier

(Если MyRhino.jar еще не преобразован в плагин, вам нужно сделать это вручную:вы можете просто создать новый проект плагина, используя существующий JAR в Eclipse)

Альтернативно вы можете включить MyRhino.jar в свой плагин и удалить зависимости от других плагинов.Для этого используйте Bundle-ClassPath (см. http://www.aqute.biz/Blog/2007-02-19 подробности).Если вы поместите MyRhino.jar непосредственно в свой плагин, то Bundle-ClassPath должен быть:

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