Запуск приложения RCP Eclipse 3.x с использованием bndtools
Я провел последние несколько дней, пытаясь найти решение своей проблемы. Я пытаюсь запустить Eclipse RCP, используя уровень совместимости 3.x, используя средство запуска bndtools через файл bndrun.
Мне известно о решении, которое включает в себя размещение bndtools.runtime.eclipse.applauncher в списке комплектов прогонов, чтобы запустить приложение E4, и что существуют способы миграции приложения E3.x в E4. Мы хотели бы сохранить программный контроль над платформой Rich Client на данный момент, поэтому переход на файл XMI для разметки Workbench в настоящее время не идеален.
Я создал проект плагина, который собирает с использованием bndtools. Насколько мне известно, я включил все необходимые пакеты для запуска приложения и следовал нескольким примерам (кроме того, большинство примеров OSGI, которые я нашел, были основаны на консоли).
Поскольку я не видел загрузки RCP (у нас есть плагин RCP, который расширяет интерфейс IApplication, а структура нашего проекта все еще основана на Activator), я изначально был в растерянности относительно того, почему это не сработало, но добавил -osgi -console = чтобы свойства запуска предоставили некоторую дополнительную информацию:
Использование -runfw: org.eclipse.osgi
Последние строки следующие:
# framework=org.eclipse.osgi.launch.Equinox@59fa1d9b
# registered launcher with arguments for syncing
# will wait for a registered Runnable
Кроме того, плагин, который я использую для тестирования, помечен как STRTD, а используемый его пакет также помечен как STRTD, тогда как большинство других пакетов помечены как ACTIV, что, как я полагаю, также является частью проблемы. Я попытался принудительно запустить пакеты, включив в них строку для запуска нескольких пакетов (следуя другим примерам), но столкнулся с проблемами, когда консоль будет сообщать об ошибке, не может загрузить или найти основной класс для org.eclipse.core.runtime при попытке включить это в список активированных пакетов.
Похоже, что поиск в Google (и даже Binging) не дал решения, объясняющего, как настроить приложение Eclipse 3.x для запуска с использованием файла bndrun. Что мне не хватает? Совсем недавно я попробовал следующие свойства:
-runproperties: \
osgi.os=win32,\
osgi.clean=true,\
osgi.console=,\
eclipse.product=org.eclipse.sdk.ide,\
osgi.arch=x86_64,\
osgi.ws=win32,\
equinox.use.ds=true,\
eclipse.application=org.eclipse.ui.ide.workbench
Я предполагаю, что если фактический тестовый комплект, который я использую, действительно активирует, я также смогу найти идентификатор приложения, установленный в файле plugin.xml, и использовать его вместо этого. Попытка активировать этот плагин также приводит к невозможности найти ошибку основного класса, даже если я указываю Bundle-Activator в файле bnd. Этот Активатор не запускается, так как он настроен на печать на консоли, и ничего не печатается. Я предполагаю, что, поскольку пакет находится в состоянии STRTD, он не запустился.
Любая помощь с этим будет оценена.
Изменить: В качестве обновления добавление org.apache.felix.gogo.runtime и org.apache.felix.gogo.shell привело к началу работы активатора моего тестового плагина. Любопытно, что плагин, от которого он зависит, переместился из STRTD в RSLVD.
Другое обсуждение показало, что нам, возможно, придется вручную запустить экземпляр Eclipse, используя EclipseStarter?
1 ответ
В следующем репозитории Github приведен пример с bndtools и Eclipse 3.8. Он использует адаптированный bndtools.runtime.eclipse.applauncher внутри /cnf/eclipse_common_3.8/bndtools.runtime.eclipse.applaunch-0.1.0.jar, см. Конфигурацию запуска 3.8 bnd, также включите здесь example.aspectj/example.aspectj.bnd.app/run/launch_org.eclip se.osgi_3.8.x.bndrun. Это был (помимо демонстрационных материалов Aspect в репозитории) наименьший набор пакетов для успешного запуска приложения Eclipse с помощью bnd.