Старт OSGi - PullRequest
       47

Старт OSGi

8 голосов
/ 10 августа 2010

Я пытаюсь запустить плагин OSGi в Eclipse.Это пустая связка, но затмение всегда посылает мне ошибки. Есть мои сообщения консоли http://pastebin.com/dqQfpQhd Что не так?

Ответы [ 6 ]

6 голосов
/ 26 июня 2011

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

Вот что вы делаете:

  1. В Eclipse перейдите в «Предпочтения»> «Разработка плагинов»> «Целевая платформа»
  2. Создание нового пустого определения цели
  3. . На вкладке «Местоположения» добавьте каталогне содержит ничего, кроме пакета Equinox (который вы можете скопировать из каталога плагинов вашей установки Eclipse, jar называется примерно как org.eclipse.osgi_3.7.0.v20110613.jar)
  4. Убедитесь, что новая цельвключите и попробуйте запустить свой пакет снова
5 голосов
/ 28 января 2014

Я много боролся за «Верстак еще не создан» весь день.

Но я получил решение с помощью следующих шагов .-

  1. Перейти к Запустить конфигурацию -> Удалить все банки целевой платформы.
  2. Нажмите, чтобы добавить необходимые пакеты.
  3. Проверьте org.apache.felix.gogo.runtime, org.apache.felix.gogo.shell, org.eclipse.eqinox.console, org.eclipse.osgi и ваш файл jar.
  4. Последний и важный шаг. Перейдите к Setting- > , проверьте , установите флажок «Очистить область конфигурации перед запуском ».
  5. Запустите приложение OSGi сейчас.
  6. Наслаждайтесь, работает ли он для вас так же, как и для меня.

Спасибо

3 голосов
/ 10 августа 2010

Это основная проблема:

java.lang.IllegalStateException: Верстак еще не создан.

Вы используете методы / объекты из верстакили связанные с верстаком, в то время как сам верстак еще не создан.Возможно, вы можете отложить активацию пакета или удалить зависимости 'workbench' из части активации / инициализации пакета.


Yikes, назад в начало.Последняя строка журнала содержит «Hello World» - это ожидаемый результат от вашего пакета?Может быть, это не ваш пакет, который вызывает ошибки и предупреждения на выходе.Я также вижу кое-что «милин» и другие вещи.Если возможно, добавьте еще одну чистую установку eclipse (без дополнительных пакетов / плагинов) в вашу систему и попробуйте пакет в этой среде.


Из хорошей статьи о eclipsezone :

Обычно это происходит, когда кто-то пытается запустить приложение Java с пакетом OSGi с помощью java -classpath....Это действительно означает, что плагин Workbench еще не запущен, и поэтому вызовы getWorkbench () не выполняются.По сути, это условие гонки, и его можно решить, либо выразив явную зависимость от этого пакета, либо подняв этот пакет на более высокий начальный уровень , чем на рабочем месте.Обычно не виден, но если это так, то именно так и происходит.

Что такое суперкласс вашего собственного пакета?Потому что это может привести к зависимости от рабочей среды.

И - как «запустить» связку, из затмения или из-за того, что вы ее собрали и положили в папку плагинов для затмения?Это тоже может иметь значение.

2 голосов
/ 22 августа 2010

Ни одна из этих ошибок не имеет никакого отношения к вашему пакету. Как видно из вывода «Hello World», ваш пакет запускается просто отлично.

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

  1. Пожалуйста, укажите, как вы запускаете Eclipse. Вы добавили -console в файл eclipse.ini?
  2. Возникает ли эта проблема, когда вы НЕ пытаетесь использовать свой собственный пакет?
  3. Как вы устанавливаете и активируете свой собственный пакет?
  4. Пожалуйста, вставьте следующие файлы:
    • MANIFEST.MF из вашего собственного пакета
    • config.ini от ECLIPSE_HOME/configuration
    • eclipse.ini от ECLIPSE_HOME
0 голосов
/ 10 августа 2010

Попробуйте сделать это перед запуском комплекта:

if(!PlatformUI.isWorkbenchRunning()) {
    PlatformUI.createAndRunWorkbench(PlatformUI.createDisplay(), new WorkbenchAdvisor() {...}); 
}
0 голосов
/ 10 августа 2010

Сначала проверьте зависимости пустого плагина. Может быть, вам не хватает добавить плагин, который не загружается во время выполнения.

Если у вас есть зависимости в вашем плагине, проверьте, какая версия плагинов используется.

Какую версию Java вы определили в своем плагине? Это выше, чем версия, которую вы используете во время выполнения?

Ваш плагин загружает библиотеки DLL? если так, проверьте, может ли DLL быть найдена во время выполнения.

Edit:

# Верстак еще не создан. # в org.eclipse.ui.PlatformUI.getWorkbench (PlatformUI.java:92) # в org.eclipse.mylyn.internal.monitor.ui.MonitorUiPlugin.start (MonitorUiPlugin.java:145)

Что вы определили в методе запуска Активатора? Получается, что вы используете верстак, который еще не создан.

...