我正在尝试使用以下命令从命令行运行OSGI模块:
java -jar target/module.jar -console
但是我总是得到
no main manifest attribute, in target/module.jar
当我发布jar文件时,MANIFEST.MF就在那里?
我忘了哪个清单?
答案 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。