2012-07-05 72 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

相关问题