如何从命令行运行osgi模块?

时间:2016-12-08 13:41:47

标签: java osgi

我正在尝试使用以下命令从命令行运行OSGI模块:

java -jar target/module.jar -console

但是我总是得到

no main manifest attribute, in target/module.jar

当我发布jar文件时,MANIFEST.MF就在那里?

我忘了哪个清单?

2 个答案:

答案 0 :(得分:3)

您不能单独运行捆绑包。 bundle需要在OSGi框架内运行。因此,您可以下载Apache felix并将您的软件包放入felix目录中,该目录选择要加载的软件包。在这种情况下,您将启动felix,然后felix将加载您的包。

Peter建议在bndrun文件中定义一组bundle和其他设置,并创建一个包含OSGi框架和bundle的胖jar。好处是bnd(工具)提供了很好的工具来完成这项工作。

因此,虽然第一个解决方案的启动和运行速度更快,但它总是涉及手动工作。 bndtools方法可以完全自动化maven构建中的包装..这可能是你想要的长期。

我已经为maven创建了一个sample project(我猜你在提到目标目录时使用maven)。

答案 1 :(得分:1)

您需要创建可执行的JAR。然后,这个JAR包含一个OSGi的启动器,框架,它知道在哪里可以找到模块。

Bndtools为此目的有一个导出任务。您必须创建 bndrun 文件,添加初始要求,解决它,然后将其导出。您也可以使用Gradle自动执行它。

您可以按照OSGi enRoute Quick Start教程了解如何将OSGi应用程序构建为可执行JAR。

相关问题