Java OSGi/BND:不同的需求取决于操作系统
我使用ApacheFelixShell为OSGi创建了一个命令组件。一个命令打开一个启动SWT UI的新线程 在BND配置中,构建和运行该组件需要SWT包。现在的问题是,每个开发人员都必须更改配置并为其操作系统包含SWT包。此外,对于每个操作系统,还需要一个其他打包包,唯一的区别是jar清单中的一行,需要启动哪些其他包 在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实现这一点 有什么想法吗?Neil Bartlett的书《OSGi在实践中》中有一节介绍了碎片束,其中提到了与操作系统相关的配置。(然而,由于我没有必要这样做,我不能说这是否真的是你想要的。) 这本书:Java OSGi/BND:不同的需求取决于操作系统,java,osgi,bnd,Java,Osgi,Bnd,我使用ApacheFelixShell为OSGi创建了一个命令组件。一个命令打开一个启动SWT UI的新线程 在BND配置中,构建和运行该组件需要SWT包。现在的问题是,每个开发人员都必须更改配置并为其操作系统包含SWT包。此外,对于每个操作系统,还需要一个其他打包包,唯一的区别是jar清单中的一行,需要启动哪些其他包 在BND或OSGi中是否有任何技巧,可以根据当前运行的系统设置构建或运行依赖项 类似于“org.eclipse.swt.{OS}.{WS}.{ARCH}”而不是“org.ecli
(这不是一个很好的答案,但可能已经足够开始了。)bnd可以使用includes。因此,创建一个标准配置,并将其包含在特定于平台的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}宏。如果人们仍然为书籍付费而不是下载盗版书。。。在这个小问题解决之前,请查看谢谢您的提示。但这并没有真正帮助我。我发现的唯一一件事是“在本例中,中的片段P将在运行时合并到A的内部类路径中。”但没有说明我将如何实现这一点。