簡體   English   中英

OSGi / BND:取決於操作系統的不同要求

[英]OSGi/BND: Different requirements depending on OS

我為OSGi創建了一個命令組件,並使用了Apache Felix Shell。 一個命令打開一個新線程,該線程啟動SWT UI。

在BND Config中,構建和運行此組件需要SWT捆綁包。 現在的問題是,每個開發人員都必須更改配置,並為其操作系統包含SWT捆綁包。 同樣,對於每個OS,都需要另一個打包的Bundle,唯一的區別是jar清單中的一行,需要啟動其他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完成。

任何想法?

bnd可以使用include。 因此,創建一個標准配置,並將其包含在平台特定的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。 因此,他擁有適用於所有平台的bndrun文件。

還有一個$ {if ...}宏或$ {replace}宏。 如果人們仍然願意為書籍付費而不是下載盜版版本...在解決這個小問題之前,請訪問http://www.aqute.biz/Bnd/Bnd

尼爾·巴特利特(Neil Bartlett)的《 OSGi實踐》一書中有關於片段捆綁的部分,其中提到了依賴於操作系統的配置。 (但是,由於我實際上並不需要這樣做,所以我不能說這是否真的是您想要的。)

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

(這並不是一個很好的答案,但也許足以解決這個問題。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM