繁体   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