2014-09-24 7 views
0

Я хочу проверить свое приложение OSGI в экзамене Pax, но у меня есть некоторые проблемы с запуском приложения из одного из моих плагинов.Как запустить приложение Equinox с аргументами запуска в экзамене Pax?

Я использую Equinox, и существует некоторый класс, эквивалентный равноденствию, который расширяет org.eclipse.equinox.app.IApplication. Этот класс может быть затем выбран в Eclipse Application Launcher и является первым классом для запуска (в моем случае он управляет жизненным циклом приложения).

Когда я запускаю экзамен по экзамену Pax, все пакеты разрешены, но мой IApplication не запускается.

Как я могу запустить этот вид приложения в экзамене Pax?

Дополнительно, как передать некоторые аргументы приложения? Я вижу только некоторые frameworkProperty (-F) и systemProperty (-D), но мне нужны некоторые обычные аргументы приложения.

ответ

0

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

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

При использовании специального материала для eclipse вы делаете свое приложение менее портативным. Так что, может быть, вы можете добиться того же с чистой инфраструктурой OSGi?

Или приложение, которое вы хотите протестировать приложением RCP затмения? В этом случае экзамен pax, вероятно, не лучший тест. В этом случае некоторые рамки тестирования пользовательского интерфейса будут лучше соответствовать. (например, https://developers.google.com/java-dev-tools/wintester/html/)

+0

Это обычное, не RCP-приложение. – wajs

+0

Итак, что вы пытаетесь достичь, используя IApplication? Возможно, я могу предложить замену. –

+0

Это какое-то требование, я считаю, что причина заключалась в том, чтобы генерировать все приятные Eclipse Launcher и его окрестности. – wajs

0

IApplication является частью Equinox и использует реестр, чтобы узнать, что установлено. Так же, как и в соответствующих баночках PAX, вам также необходимо убедиться, что вы запускаете как минимум декларативные службы и пакеты реестров расширения, так как в противном случае материал IApplication не будет найден.

Во-вторых, нет пакета, который вызывает класс EclipseStarter, который обрабатывает основные аргументы и передает это через среду выполнения. Поэтому, если вы этого не сделаете, вы обнаружите, что приложение не будет запускаться вообще.

Если вы начинаете Eclipse, специально вы могли бы найти некоторые аргументы Eclipse, специфичные для определения их как системные свойства Java:

http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fmisc%2Fruntime-options.html

, например, можно указать -Dapplication.id = YourApp

Вы также можете попробовать eclipse.commands как список аргументов, разделенных символом новой строки.

+0

Итак, как я могу использовать этот EclipseStarter для запуска моего приложения? – wajs

+0

Из кода вы можете назвать его основным методом. См. Http://stackoverflow.com/questions/4673406/programatically-start-osgi-equinox и/или мою книгу Eclipse ;-) – AlBlue

+0

Но разве это не открытие другого контейнера osgi, вне экзамена pax? Потому что я вижу, что он возвращает новый bundleContext. – wajs