java - OSGi/BND : Different requirements depending on OS

标签 java osgi bnd

我使用 Apache Felix Shell 为 OSGi 创建了一个命令组件。一个命令打开一个新线程,该线程启动 SWT UI。

在 BND 配置中,需要 SWT bundle 来构建和运行该组件。现在的问题是,每个开发人员都必须更改配置并为其操作系统包含 SWT bundle 。此外,对于每个操作系统,都需要其他打包的 bundle ,唯一的区别是 jar list 中的一行,需要其他 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 可以使用包含。因此,创建一个标准配置并将其包含在特定于平台的 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

关于java - OSGi/BND : Different requirements depending on OS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11344645/

相关文章:

java - 二维数组的相邻值 (java)

java - 将 blob(文本文件)从 Azure 存储以 UTF8 下载到内存?

java - 如何从不同的类访问变量

java - python 中是否有类似于 osgi 试图在 java 中解决的要求?

maven - 覆盖 Maven-Bundle-Plugin 中的 Require-Capability

java - 使用 bndtools 包装从默认包导入的第三方 jar

Java只能在JFrame上显示1张图像

OSGI Bundle 的 start() 方法未被调用

java - DS 组件的生命周期如何运作?

jsf - OSGI 和 JSF 如何协同工作?