Плагин Eclipse - неправильная банка используется во время выполнения - PullRequest
0 голосов
/ 26 июня 2009

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

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

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

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

Как я должен сказать Eclipse использовать тот же JAR во время выполнения, что и во время разработки?

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

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

Ответы [ 2 ]

3 голосов
/ 26 июня 2009

Убедитесь, что ваши зависимости верны. Если ваш код зависит от новой версии библиотеки, вам необходимо указать это в вашем файле 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
1 голос
/ 29 июня 2009

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

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

После вставки банки в classpath пакета подключаемого модуля оболочки все работает.

Спасибо Питеру за ваш ответ в любом случае:)

...