Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OSGi/BND:不同的需求取决于操作系统_Java_Osgi_Bnd - Fatal编程技术网

Java OSGi/BND:不同的需求取决于操作系统

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

我使用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在实践中》中有一节介绍了碎片束,其中提到了与操作系统相关的配置。(然而,由于我没有必要这样做,我不能说这是否真的是你想要的。)

这本书:


(这不是一个很好的答案,但可能已经足够开始了。)

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的内部类路径中。”但没有说明我将如何实现这一点。