2016-12-08 3 views
1

Я пытаюсь запустить модуль OSGi из командной строки с помощью следующей команды:Как запустить модуль osgi из командной строки?

java -jar target/module.jar -console 

Однако я всегда получаю

no main manifest attribute, in target/module.jar 

Когда я extraxct файл банку MANIFEST.MF там?

Какой манифест я забыл?

ответ

1

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

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

Вы можете следить за учебником OSGi enRoute Quick Start, чтобы узнать, как создать приложение OSGi в качестве исполняемого JAR.

+0

Что такое bndrun и зачем оно мне нужно? –

+0

Файл bndrun описывает вашу рабочую среду. Рамка, которую вы хотите использовать, пакеты, дополнительные библиотеки, свойства, настройки и т. Д. Если вы следуете руководству Quick Sart, вам должно стать ясно. –

3

Вы не можете просто запустить комплект самостоятельно. Пакет должен работать внутри рамки OSGi. Таким образом, вы можете, например, загрузить Apache felix и поместить свой пакет в каталог felix, который собирает пакеты для загрузки. В этом случае вы начнете felix, а felix загрузит ваш комплект.

Что предлагает Питер, это определить свой набор пакетов и других параметров в файле bndrun и создать жирную банку, которая содержит инфраструктуру OSGi, а также ваши пакеты. Приятно, что bnd (tools) обеспечивает отличную инструментацию, чтобы сделать это профессионально.

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

Я создал sample project, который показывает это для maven (я предполагаю, что вы используете maven при упоминании целевого каталога).

Смежные вопросы