这里似乎只有另一个这种性质的问题,但该答案提出的解决方案对我来说并不有效。我使用 Spring Tool Suite(本质上是 Kepler 4.3.2 SR2)作为我的 IDE 来开发一个 OSGi 片段,其中包含一些本机 C++ 代码的最新版本。这些片段的存在是为了允许在不同环境中存在不同版本的软件,这些本地代码旨在与之集成。
但是我无法导出这个片段,显然是因为我们用来表示这个版本号的自定义 vm arg。
清单看起来像这样:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Windows 64-bit support for Third-Party XYZ 4.12.7
Bundle-SymbolicName: com.ourcompany.oursoftwarepackage.xyz.win64xyz4127
Bundle-Version: 8.6.2.qualifier
Bundle-Vendor: OurCompany
Fragment-Host: com.ourcompany.oursoftwarepackage.xyz
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Eclipse-PlatformFilter: (& (osgi.os=win32) (osgi.arch=x86_64))
Bundle-NativeCode: xyzintegration.dll; selection-filter = "(oursoftwarepackage.xyzVersion=4.12.7)"
Bundle-ClassPath: .
错误说:
处理来自功能 org.eclipse.pde.container.feature 的包含:捆绑 com.ourcompany.oursoftwarepackage.xyz.win64xyz4127_8.6.2.qualifier 无法解析。:不满意的本机代码过滤器:xyzintegration.dll;选择过滤器=“(我们的软件包.xyzVersion=4.12.7)”。
如果我删除选择过滤器子句,那么它似乎是导出的,但没有产生实际的工件。
我从上面的链接推断的建议是包括 vmarg
-Doursoftwarepackage.xyzVersion=4.12.7
在插件开发目标环境中。然而,这似乎并不满足 OSGi 框架。现在我不知道如何让片段解析以便导出可以继续。