我为 OSGi 创建了一个命令组件并使用 Apache Felix Shell。一个命令打开一个启动 SWT UI 的新线程。
在 BND 配置中,构建和运行该组件需要 SWT Bundle。现在的问题是,每个开发人员都必须更改配置并为他们的操作系统包含 SWT Bundle。此外,对于每个操作系统,都需要一个其他打包的 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 完成。
任何的想法?