Конфигурация Eclipse для поддержки двух сред Equinox/Felix

Какие изменения в конфигурации внесены для обеспечения наилучшей поддержки Eclipse PDE при работе как с Equinox, так и с Felix?

Вот пример проблемы, которая у меня сейчас есть. Я могу нормально запустить свое приложение через средство запуска Eclipse OSGi Framework. Точно так же нет проблем с компиляцией в PDE. Однако при работе в Felix я получаю NoClassDefFoundErrors:

java.lang.NoClassDefFoundError: org/w3c/dom/DOMException

Насколько я понимаю, здесь виновата моя настройка Eclipse; org.w3c.dom не является пакетом OSGi по умолчанию и не должен загружаться, когда я запускаю его в Eclipse. Точно так же импорт в моем коде для org.w3c.dom.DOMException должен быть ошибкой.

Я знаю, как исправить это для Феликса: объявить Import-Package. Но это не мой вопрос. Мой вопрос заключается в том, как заставить Eclipse PDE принять более близкую конфигурацию к Felix... в основном, чтобы сделать его более строгим при загрузке пакетов?


person Dan Gravell    schedule 04.07.2012    source источник


Ответы (3)


Я думаю, что Equinox действительно ведет себя как Felix, если вы запускаете его отдельно. Это скорее наследие Eclipse, чем Equinox, как указано в osgi.org.

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

person Frank Lee    schedule 04.07.2012
comment
Хорошо спасибо. Я отредактирую вопрос, чтобы сосредоточиться на программе запуска Eclipse и PDE. - person Dan Gravell; 04.07.2012

Если вы разрабатываете серверное приложение, я рекомендую вообще не использовать PDE. Я использую maven и плагин пакета maven для разработки своих пакетов. Затем я развертываю на Apache karaf. Отладка также довольно проста с помощью команды karaf dev:watch и удаленной отладки. Я никогда не скучал по функциям PDE, и они никогда не работали хорошо с моей сборкой maven.

person Christian Schneider    schedule 04.07.2012
comment
Это Maven с bnd или вы сами управляете манифестом? Насколько я понимаю, если вы делаете последнее, это два места, где вы должны указать зависимости. - person Dan Gravell; 04.07.2012
comment
Я использую плагин пакета maven от felix, который внутри использует bnd. Таким образом, есть только одно место для указания зависимостей. Bnd также автоматически определяет большинство зависимостей. Так что в большинстве случаев делать особо нечего. - person Christian Schneider; 04.07.2012

Похоже, что эта программа запуска устанавливает делегирование загрузки в устаревший режим. См. следующую страницу на OSGi Wiki: http://wiki.osgi.org/wiki/Why_does_Eclipse_find_javax.swing_but_not_Felix%3F

person Neil Bartlett    schedule 04.07.2012
comment
Вот параметры, которые отправляются: Declipse.log.level=ALL -Dbliss.obr.updaterepository=file:/home/gravelld/eclipse-workspaces/bliss/com.elsten.bliss.installer/release/bliss-bundle/repository.xml -Dfile.encoding=UTF -8 -classpath /opt/eclipse-indigo/eclipse/plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar org.eclipse.equinox.launcher.Main . Так что я ничего там не вижу. Кроме того, это не объясняет, почему PDE не улавливает его во время компиляции. - person Dan Gravell; 04.07.2012