6

这里似乎只有另一个这种性质的问题但该答案提出的解决方案对我来说并不有效。我使用 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 框架。现在我不知道如何让片段解析以便导出可以继续。

4

1 回答 1

0

我想你说的是目标定义编辑器的目标环境设置。至少那是我所知道的唯一适合这种环境的地方。但这就是您正在开发的目标的定义。它没有指定运行时。

您需要在运行配置中设置 VM 参数。

运行 -> 运行配置... -> 选择要启动的应用程序 -> 切换到参数选项卡 -> 将值插入 VM 参数部分

于 2015-11-20T07:42:56.407 回答