2012-07-05 104 views
0

我爲OSGi創建了一個命令組件,並使用了Apache Felix Shell。一個命令將打開一個啓動SWT UI的新線程。OSGi/BND:根據操作系統的不同要求

在BND配置的SWT捆綁需要用於構建並運行該組件。現在的問題是,每個開發人員都必須更改配置並在他們的操作系統中包含SWT Bundle。另外,對於每個操作系統,還需要其他打包的Bundle,其中唯一的區別是jar的Manifest中的一行,其他Bundle需要啓動。

是否有BND或OSGi的任何伎倆,在那裏我可以設置生成或運行依賴取決於當前運行的系統上?

類似於「org.eclipse.swt。{OS}。{WS}。{ARCH}」而不是「org.eclipse.swt.win32.win32.x86_64」? 或者至少我可以要求配置中的特定操作系統?所以,如果用戶使用錯誤的包,它會顯示一個很好的錯誤,而不是一個ClassNotFound異常?

另一個問題(http://stackoverflow.com/questions/2706222/create-cross-platform-java-swt-application/5784073#5784073)中描述的解決方案不適用於我或更好我不'不知道BND/OSGi如何做到這一點。

任何想法?

回答

1

BND可以使用包括。因此,創建一個標準配置並將其包含在平臺特定的bndrun文件中。

bnd.bnd: 
# standard set that uses macros for the places where specials need to be insered 
-runbundles: \ 
     .... 
     ${platformdeps} 

windows.bndrun: 
-include bnd.bnd 
platformdeps = org.eclipse.swt.win.x86.jar 

無論如何,看看bndtools。 Neil Bartlett在沒有PDE的情況下在bndtools中構建bndtools。所以他已經爲所有平臺創建了文件。

還有一個$ {如果...}宏或$ {}替換宏。如果人們仍然會支付的書籍,而不是下載盜版......直到小問題就解決了,看http://www.aqute.biz/Bnd/Bnd

0

尼爾·巴特利特的書「OSGi的實踐」在其操作系統相關的配置都提到的片段捆綁的部分。 (不過,我沒有必要真的這樣做,我不能說,這是否真的是你在找什麼。)

書:http://njbartlett.name/osgibook.html

(這是不是一個真正的漂亮的答案,但也許足以讓去。)

+0

謝謝你的提示。但沒有幫助我真的出來。只有我發現的是「在這種情況下,片段P in將在運行時合併到A的內部類路徑中。」但沒有領導我如何實現這一目標。 – attrib 2012-07-11 07:03:20

相關問題