2016-12-08 39 views
1

我試圖運行在命令行中使用以下命令的OSGI模塊:如何從命令行運行osgi模塊?

java -jar target/module.jar -console 

不過,我總是得到

no main manifest attribute, in target/module.jar 

當我extraxct JAR文件中的MANIFEST.MF是嗎?

我忘記了哪個表單?

回答

1

您需要創建一個可執行的JAR。然後這個JAR包含一個用於OSGi的框架,它知道在哪裏可以找到這些模塊。

Bndtools爲此具有導出任務。您必須創建一個bndrun文件,添加初始需求,解決它,然後導出它。您也可以使用Gradle將其自動化。

您可以按照OSGi enRoute Quick Start教程,看看如何構建一個OSGi應用程序作爲一個可執行的JAR。

+0

bndrun是什麼,爲什麼我需要它? –

+0

bndrun文件描述您的運行時間。你想要使用的框架,捆綁包,額外的庫,屬性,設置等。如果你按照快速入門教程,它應該變得清晰。 –

3

你不能簡單地通過自身運行包。一個bundle需要在OSGi框架內運行。所以你可以例如下載Apache felix,並將你的軟件包放入felix目錄,該目錄提取要加載的軟件包。在這種情況下,你會開始felix,然後felix會加載你的包。

什麼彼得建議是定義你的包和其他設置的集合在bndrun文件,並創建包含OSGi框架以及你的軟件包中的脂肪罐子。好的是bnd(工具)提供了很好的工具來完成這個專業。

因此,儘管起牀,並與第一個解決方案運行速度更快,也不可避免地會涉及手工工作。 bndtools方法可以在Maven構建中完全自動化包裝。這可能是您長期想要的。

我創建了一個sample project,顯示此對Maven(我猜你用maven你提到的目標目錄)。