Добавьте плагины с автоматическим запуском в приложение RCP Eclipse - PullRequest
2 голосов
/ 04 ноября 2011

У меня есть приложение Eclipse RCP, и я безуспешно пытаюсь установить созданный мной плагин, который должен быть развернут отдельно для вышеупомянутого приложения.

Для этого я запускаю приложение как ./App -console, а когда оно перестало загружаться, я набираю:

install file://URLTOjAR/plugin.jar

Он возвращает мне идентификатор плагина (скажем, 288), поэтому я набираю потом:

start 288

После этого плагин работает нормально, но когда я перезагружаю приложение, с помощью ss я вижу только, что плагин только "Разрешен", но я бы хотел, чтобы он был запущен.

Есть ли способ автоматизировать это?

Ответы [ 5 ]

2 голосов
/ 06 ноября 2011

Поскольку вы используете приложение Eclipse RCP, вы, скорее всего, используете SimpleConfigurator для определения списка установленных на данный момент пакетов.Откройте файл App / configuration / org.eclipse.equinox.simpleconfigurator / bundles.info

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

ch.qos.logback.classic,0.9.27.v20110224-1110,plugins/ch.qos.logback.classic_0.9.27.v20110224-1110.jar,4,false

Ниже приведены различные части строки:

  1. идентификатор пакета
  2. версия пакета
  3. имя файла jar относительно места установки
  4. начальный уровень (обычно просто установите его на 4)
  5. независимо от того, нужно ли автоматически запускать ваш пакет, измените его на true.

Итак, просто добавьте такую ​​строку в ваш bundles.info, и вам будет хорошо идти.

1 голос
/ 07 ноября 2011

И вот еще один способ решить эту проблему.Немного сложнее, чем при использовании простого конфигуратора (см. Мой другой ответ), но он должен быть более широко применим.

В файле конфигурации / config.ini должно быть свойство osgi.bundles.Это свойство принимает список пакетов, разделенных запятыми, для использования в экземпляре osgi.Свойство выглядит следующим образом:

osgi.bundles=file:/path/to/bundle,file:/path/to/other/bundle@1\:start

@ 1 - начальный уровень пакета, а :start означает, что пакет должен быть запущен автоматически.

1 голос
/ 05 ноября 2011

Установленный и запущенный пакет должен быть запущен при следующем запуске.

Возможно, активатор выдает исключение, когда инфраструктура пытается запустить пакет, и он остается в состоянии RESOLVED. Проверьте логи. Возможно, пакет плохо обрабатывает сервисы, ресурсы, которые (пока) недоступны при запуске.

0 голосов
/ 04 ноября 2011

Создайте еще один плагин, который:

  1. Прослушивает события жизненного цикла комплекта (используя BundleListener).
  2. Записывает добавленные комплекты.
  3. При запуске ищетзаписи с последнего запуска и запуска пакетов, перечисленных там.
0 голосов
/ 04 ноября 2011

Я не уверен, погода, я правильно понял ваш вопрос. Но я попробую:

  1. почему вы пытаетесь установить пакет / плагин, который не связан с приложением. Если ваш плагин / пакет не имеет ничего общего с работающей средой приложения, тогда просто используйте среду eclispe для запуска пакета с необходимыми другими плагинами.

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

  3. Если вы действительно хотите, чтобы пакет начинался с вашего приложения, то вы можете сделать следующее:

найдите файл конфигурации, в котором перечислены все начальные данные пакета в вашем приложении RCP.

* Это может быть файл config.ini * или файл bundles.info, если приложение использует simpleconfigurator

вставьте информацию о вашем пакете в один из файлов конфигурации. (есть параметр для установки, если вы хотите немедленного запуска - 'true')

НТН, --Pradeep

...